使用工具栏导航回Parent活动

时间:2016-04-22 02:54:13

标签: android android-manifest android-toolbar

所以要打破它。

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

当我处于子活动状态时,我想按下返回主页按钮 在工具栏上,返回家。

我尝试将android.support.PARENT_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
            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>

如果我正确地执行清单,我不太自信,stackoverflow上的其他解决方案非常混乱。如果我可以直截了当地回答这个问题,那就太棒了。谢谢!

5 个答案:

答案 0 :(得分:2)

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

    return super.onOptionsItemSelected(item);
}

答案 1 :(得分:1)

清单错误

cat /var/chef/cache/chef-stacktrace.out
Generated at 2016-04-21 11:47:24 -0600
Chef::Exceptions::CannotDetermineNodeName: Unable to determine node name:    configure node_name or configure the system's hostname and fqdn
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-  11.12.8/lib/chef/client.rb:299:in `node_name'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:313:in `register'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:416:in `do_run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:213:in `block in run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:207:in `fork'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/client.rb:207:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application.rb:217:in `run_chef_client'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application/client.rb:328:in `block in run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application/client.rb:317:in `loop'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application/client.rb:317:in `run_application'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/lib/chef/application.rb:67:in `run'
/opt/chef/embedded/lib/ruby/gems/1.9.1/gems/chef-11.12.8/bin/chef-client:26:in `<top (required)>'
/usr/bin/chef-client:23:in `load'
/usr/bin/chef-client:23:in `<main>'[root@xyz chef]# 

答案 2 :(得分:1)

您也可以使用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);
    }

答案 3 :(得分:0)

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

试试这个。

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

答案 4 :(得分:0)

如果使用AppCompatActivity,则当前最好的方法是重写onSupportNavigateUp()方法。

这是Kotlin中的代码:

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