当我从导航抽屉点击调用第二个活动时,应用程序停止工作

时间:2015-03-30 17:06:43

标签: java android android-activity android-manifest android-lifecycle

当我点击列表视图的第一个位置时,我想让它带我去另一个活动,当我点击第二个位置时,我希望它带我去另一个活动..等等。我曾尝试编写代码,当我点击列表视图的第一项时,它会带我参加活动" MrsClubb"但每当我点击该项目时,它都会显示消息"不幸的是" app name"已停止工作"然后应用关闭。

有什么想法吗?

以下是我的应用的各个部分的代码:

MainActivity.java

public class MainActivity extends ActionBarActivity {

DrawerLayout mDrawerLayout;
ListView mDrawerList;
ActionBarDrawerToggle mDrawerToggle;
String[] mDrawerListItems;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
    mDrawerLayout = (DrawerLayout)findViewById(R.id.drawer);
    mDrawerList = (ListView)findViewById(android.R.id.list);
    mDrawerListItems = getResources().getStringArray(R.array.drawer_list);
    mDrawerList.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mDrawerListItems));
    mDrawerList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            switch(position) {
                case 0:
                    Intent i = new Intent(MainActivity.this, MrsClubb.class);
                    startActivity(i);
            }
            mDrawerLayout.closeDrawer(mDrawerList);

        }
    });
    mDrawerToggle = new ActionBarDrawerToggle(this,
            mDrawerLayout,
            toolbar,
            R.string.drawer_open,
            R.string.drawer_close){
        public void onDrawerClosed(View v){
            super.onDrawerClosed(v);
            invalidateOptionsMenu();
            syncState();
        }
        public void onDrawerOpened(View v){
            super.onDrawerOpened(v);
            invalidateOptionsMenu();
            syncState();
        }
    };
    mDrawerLayout.setDrawerListener(mDrawerToggle);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    getSupportActionBar().setHomeButtonEnabled(true);
    mDrawerToggle.syncState();
}

@Override
protected void onPostCreate(Bundle savedInstanceState){
    super.onPostCreate(savedInstanceState);
    mDrawerToggle.syncState();
}

@Override
public void onConfigurationChanged(Configuration newConfig){
    super.onConfigurationChanged(newConfig);
    mDrawerToggle.onConfigurationChanged(newConfig);
}

@Override
public boolean onOptionsItemSelected(MenuItem item){
    switch (item.getItemId()){
        case android.R.id.home: {
            if (mDrawerLayout.isDrawerOpen(mDrawerList)){
                mDrawerLayout.closeDrawer(mDrawerList);
            } else {
                mDrawerLayout.openDrawer(mDrawerList);
            }
            return true;
        }
        default: return super.onOptionsItemSelected(item);
    }
}
}

清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.jonatboard.jonat.htssoundboard" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

</manifest>

我希望项目在点击时带我去的活动目前是空的,只包含此代码:

public class MrsClubb {
}

如果您需要查看更多代码来帮助您,请告诉我们。

2 个答案:

答案 0 :(得分:1)

MrsClubb类定义为

public class MrsClubb extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState){

        setContentView(R.id.mrsClubbLayout);
        ....
        ....

    }

}

并覆盖onCreate()类的Activity方法(至少)。还要在清单中添加声明:

<activity
    android:name=".MrsClubb"
    android:label="@string/mrs_clubb_activity_title" >
</activity>

答案 1 :(得分:1)

你需要这样做:

public class MrsClubb extends Activity{}

并添加到您的清单中:

<activity
        android:name=".MrsClubb"
        android:label="@string/title_activity_mrs_clubb" />