使用工具栏导航回父级 activity

Navigating back to Parent activity with toolbar

所以分解一下。

我有两个活动:一个主要 activity 和一个子 activity。

当我在子activity时,我想按return主页按钮 在工具栏上,然后 return 回到主页。

我尝试将 android.support.PARENT_ACTIVITY 放入清单中,但仍然无法正常工作。也许我在这里没有看到明显的东西。希望大家帮帮忙。

这是我的子activity。

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

        //Toolbar
        myToolbar = (android.support.v7.widget.Toolbar) findViewById(R.id.app_bar_pic);
        setSupportActionBar(myToolbar);
        getSupportActionBar().setHomeButtonEnabled(true);
        getSupportActionBar().setDisplayHomeAsUpEnabled(true);


    }

    private void setSupportActionBar(Toolbar myToolbar)
    {

    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        int id = item.getItemId();
        if(id == android.R.id.home)
        {
            NavUtils.navigateUpFromSameTask(this);
        }

        return super.onOptionsItemSelected(item);
    }

现在这是我的清单。第一个 activity 是主要的 activity。第二个 activity 是 subactivity.

<activity
            android:name=".MyActivity"
            android:label="Promenade"
            android:parentActivityName=".MyActivity">
            <meta-data android:name="android.support.PARENT_ACTIVITY"
                android:value=".CardFinal.imageActivity">
            </meta-data>
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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


  </activity>
        <activity android:name=".CardFinal.imageActivity"
            android:label="PickImage">
        </activity>

我不太确定我是否正确地执行了清单,Whosebug 上的其他解决方案非常混乱。如果我能对此有一个直接的答案,那就太棒了。谢谢!

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    int id = item.getItemId();
    if(id == android.R.id.home)
    {
        //NavUtils.navigateUpFromSameTask(this);
          finish();
    }

    return super.onOptionsItemSelected(item);
}

清单有误

<activity
        android:name=".MyActivity"
        android:label="Promenade"
       > 
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>


 </activity>
    <activity android:name=".CardFinal.imageActivity"
        android:parentActivityName=".MyActivity"
        android:label="PickImage">
        <meta-data android:name="android.support.PARENT_ACTIVITY"
            android:value=".MyActivity">
        </meta-data>
    </activity>

您也可以使用 Intent 或 onBackPressed() 方法

 @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        int id = item.getItemId();
        if(id == android.R.id.home)
        {
            //intent your parent activity
           Intent intent = new Intent(getApplicationContext(),YourActivit.class);
          startActivity(intent);
          finish();

         //Other way
         onBackPressed();
        }

        return super.onOptionsItemSelected(item);
    }
if(getSupportActionBar() != null){
     getSupportActionBar().setDisplayHomeAsUpEnabled(true);
 }

试试这个。

https://developer.android.com/training/implementing-navigation/ancestral.html

如果您使用 AppCompatActivity,目前最好的方法可能是覆盖 onSupportNavigateUp() 方法。

这是 Kotlin 中的代码:

override fun onSupportNavigateUp(): Boolean {
    onBackPressed()
    return true
}