不能在活动之间切换
对不起,要求哑提问,Java和Android都是我的新手;)不能在活动之间切换
我的问题:我不能在一个非常简单的应用程序中的两个活动之间切换。我尝试了类似主题中描述的解决方案,但没有奏效。
所以这是我的第一个活动(我没贴进口):
public class OneActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void OnStart(){
Button Btn = (Button)findViewById(R.id.btnNext);
Btn.setOnClickListener(new OnClickListener() {
public void onClick(View Button) {
Intent myIntent = new Intent(OneActivity.this, UserInput.class);
OneActivity.this.startActivity(myIntent);
}
});
}
}
第二个活动是非常简单 - 它只是应该加载一个名为userinput布局。 XML:
public class UserInput extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.userinput);
}
}
清单的应用部分看起来像以下:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".OneActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<activity
android:name=".UserInput"
android:label="@string/app_name" />
</activity>
</application>
当我运行应用程序,并单击按钮没有任何反应。哪里可能是问题?
//好了,我已经把代码放到onCreate()方法,因此现在看起来像以下:
public class OneActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button Btn = (Button)findViewById(R.id.btnNext);
Btn.setOnClickListener(new OnClickListener() {
public void onClick(View Button) {
Intent myIntent = new Intent(OneActivity.this, UserInput.class);
OneActivity.this.startActivity(myIntent);
}
});
}
}
现在应用程序崩溃(强制关闭),我随时点击下一个按钮。
检查它下面的行
Intent myIntent = new Intent(OneAvtivity.this, SecondActivity.class);
startActivity(myIntent);
你的类名是UserIpnout和你写SecondActivity.class
Intent myIntent = new Intent(OneAvtivity.this, UserInput .class);
startActivity(myIntent);
你有资本 'O' 定义在onStart()函数。这就是为什么该功能从未被调用。
你在onStart():
public void OnStart(){ ... }
应该如何:
// Note the lowercase 'o' in onStart
public void onStart(){ ... }
还要注意的是具有函数名以上的@覆盖时要覆盖的方法将有助于防止使这些错误,比如Eclipse(或者你使用的任何IDE)会告诉你,你实际上并没有重写一个函数。
可以在onCreate()
把所有的代码,简化这样
startActivity(new Intent(this, UserInput.class));
但我不明白为什么你开始另一项活动是这样
下面的代码写在onCreate()方法:
Button Btn = (Button)findViewById(R.id.btnNext);
Btn.setOnClickListener(new OnClickListener() {
public void onClick(View Button) {
Intent myIntent = new Intent(OneActivity.this, UserInput.class);
startActivity(myIntent);
}
});
为Android清单文件
第2修正:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".OneActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity> <!-- closed here -->
<activity
android:name=".UserInput"
android:label="@string/app_name" />
</application>
嘿非常感谢,现在它的工作!但是你能告诉我为什么第二项活动是在活动标签之外定义的吗? – Droidman 2012-02-09 13:24:24
@ Maver1ck无论何时您创建任何活动,您都必须在AndroidManifest.xml文件中声明该活动。而第二个活动标签用/>符号而不是关闭。 ** FYI,结束标记与/>和都是相同的。** – 2012-02-09 13:33:28
啊好的,谢谢。还有一个问题:当我编辑main.xml文件时,我可以在XML和图形布局之间切换,但是当编辑我创建的任何其他xml文件时,我无法使用图形布局查看结果我的工作..有没有办法使用可视化编辑器为我的XML文件? – Droidman 2012-02-09 13:49:54
我希望在另一个内定义一个活动不会帮助你。 – 2012-02-09 13:13:12