Activity 在单击 ActionBar 后退导航按钮时未返回到上一个 activity

Activity is not returning to previous activity while clicking on ActionBar back navigation button

我的 Activity 正在扩展 ActionBarActivity 并且我们正在 onCreate() 中设置一个后退导航按钮:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);          
    setContentView(R.layout.activity_main);

    if(getSupportActionBar()!=null)
    {
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
    }
}

对于后按,完成这个 activity 是在给定的覆盖方法上,但它不会移动到之前的 activity

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case R.id.home:
            finish();
            return true;
     }
     return super.onOptionsItemSelected(item);
}

您的ID有误。所以请将您的 ID 'R.id.home' 更改为 'android.R.id.home:'。

switch (item.getItemId())
{
    case android.R.id.home:
        finish();
        return true;
 }

试试这个。

请参考以下代码

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_next);

 getActionBar().setHomeButtonEnabled(true);
 getActionBar().setDisplayHomeAsUpEnabled(true);


 }

 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
 switch (item.getItemId()) {
 case android.R.id.home:

 // app icon in action bar clicked; goto parent activity.
 this.finish();
 return true;
 default:
 return super.onOptionsItemSelected(item);
 }

}

需要调用onBackPressed函数

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch (item.getItemId())
    {
        case android.R.id.home:
            onBackPressed();
            finish();
            return true;
    }
    return super.onOptionsItemSelected(item);
}

您需要覆盖 onBackPressed 方法来处理 ActionBar 上的后退按钮(主页按钮)。

@Override
public void onBackPressed() {
   super.onBackPressed();
   // your code here
   // finish();
}

You have to set toolbar before get .

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);          
    setContentView(R.layout.activity_main);
    Toolbar mToolBar = (Toolbar) findViewById(R.id.app_bar);

    setSupportActionBar(mToolBar);
    getSupportActionBar().setTitle("Some titile);

    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

       mToolBar.setNavigationOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            /**
             change code here*/
        }
    });
}

要提供正确的向上导航,您必须:

在清单中定义父级 activity。

<activity
   android:name=".MainActivity"
   android:parentActivityName=".HomeActivity"
   ....>

  <meta-data
    android:name="android.support.PARENT_ACTIVITY"
    android:value=".HomeActivity" />
</activity>

并且在 MainActivity 中:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);

MainActivity 的xml 中应该有一个工具栏。然后覆盖 onOptionsItemSelected.

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
    case android.R.id.home:
         finish();
         return true;
 }
}

而不是使用 finish(),您应该考虑使用 NavUtils.navigateUpFromSameTask(this) 或 NavUtils 的其他类似方法 class。

使用像 singleTop 这样的启动模式来防止重新加载父级 activity。

可以找到有关正确向上导航的更多信息 here