我刚开始进行Android开发,当我浏览抽屉时,我的应用程序崩溃了。这是我在导航抽屉活动中编辑的代码。
这是我编辑的东西,当有人选择抽屉中的一个项目时,我想要新的屏幕。我创建了3个新布局(xml文件),并希望显示这些
@SuppressWarnings("StatementWithEmptyBody")
@Override
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
if (id == R.id.call) {
setContentView(R.layout.phone);
et1 = (EditText) findViewById(R.id.editText);
btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(this);
}
else if (id == R.id.message) {
setContentView(R.layout.sms);
et2 = (EditText) findViewById(R.id.editText2);
et3 = (EditText) findViewById(R.id.editText3);
btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(this);
}
else if (id == R.id.email) {
setContentView(R.layout.email);
et4 = (EditText) findViewById(R.id.editText4);
et5 = (EditText) findViewById(R.id.editText5);
et6 = (EditText) findViewById(R.id.editText6);
btn3 = (Button)findViewById(R.id.button3);
btn3.setOnClickListener(this);
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
答案 0 :(得分:2)
您的应用崩溃了,因为您无法使用setContentView(R.layout.something)。
首先,您需要为每个XML文件创建活动。这很简单:
public class Activity1 {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.phone); //DO THIS FOR EACH XML LAYOUT
}
}
然后不要忘记另一个重要的事情,将每个活动添加到AndroidManifest.xml。您的清单文件可能已经包含以下内容:
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//ADD NEXT 2 LINES FOR EACH NEW ACTIVITY YOU MAKE
<activity
android:name=".Activity1">
</application
然后,您需要做的最后一件事是在onNavigationItemSelected方法中。
取代setContentView(R.layout.something),执行以下操作:
Intent intent = new Intent(this, Activity1.class);
startActivity(intent);
如果我的答案中有任何不清楚的地方,请随时提出。
注意:如果您希望应用通过导航栏更改活动,则可以使用此选项。您可能希望查看片段以获得不同的方法。
编辑:这是Google关于活动的教程的链接:
https://developer.android.com/training/basics/firstapp/starting-activity.html
以下是另一个示例的链接,您可能更容易理解:
http://hmkcode.com/android-start-another-activity-within-the-same-application/