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



应用程序不断崩溃。它说在actionBar.setDisplayHomeAsUpEnabled(true);上有一个空指针异常。我检查了我的代码,有一个用于后退按钮的按钮。它已定义并返回到主地图活动。在选项项选定(菜单项菜单)中,我已经为我的后退按钮放置了外壳。我不知道为什么它给了我一个错误。

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();
        }
    });
}
}

这是我的菜单.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>

更改

ActionBar actionBar = getActionBar();

ActionBar actionBar = getSupportActionBar();


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

最新更新