actionBar.setDisplayHomeAsUpEnabled(true)中的空指针异常;

时间:2015-03-12 05:49:22

标签: java android nullpointerexception android-actionbar back

应用程序不断崩溃。它表示actionBar.setDisplayHomeAsUpEnabled(true);中存在空指针异常。我检查了我的代码,后面的按钮有一个按钮。它被定义并且它可以追溯到主要的地图活动。在onOptionsItemSelected(MenuItem菜单)中,我已经为我的后退按钮添加了大小写。我不知道为什么它会给我一个错误。

public class AddressList extends ActionBarActivity {


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_address_list);
    // get action bar
    ActionBar actionBar = getActionBar();

    // Enabling Up / Back navigation
    actionBar.setDisplayHomeAsUpEnabled(true);
    ListView listview = (ListView) findViewById(R.id.listView);

}


@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_address_list, menu);

    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    switch (item.getItemId()) {
        case R.id.button:
            Add();
            return true;
        case R.id.back:
            Back();
            return true;
    }


    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }

    return super.onOptionsItemSelected(item);
   }

 private void Back(){
Button button = (Button) findViewById(R.id.back);
button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

        Intent intent = new Intent(AddressList.this, MapsActivity.class);
        startActivity(intent);
        finish();
    }
});

  }
   private void Add() {
    Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {

            Intent intent = new Intent(AddressList.this, SilentGeofence.class);
            startActivity(intent);
            finish();
        }
    });
}
}

这是我的menu.xml文件你可以看到我有一个后退按钮。

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.anusha.app.AddressList">
<item android:id="@+id/action_settings" android:title="@string/action_settings"
    android:orderInCategory="100" app:showAsAction="never" />

<item android:id="@id/button"
    android:title="+"
    app:showAsAction="ifRoom">

    <item android:id="@+id/back"
        android:title="List"
        app:showAsAction="ifRoom" />
</item>

</menu>

1 个答案:

答案 0 :(得分:1)

更改

ActionBar actionBar = getActionBar();

ActionBar actionBar = getSupportActionBar();


执行此更改的原因是:您的活动从ActionBarActivity延伸,这意味着您正在使用支持库中的ActionBar,因此您必须使用getSupportActionBar()