Android - 从活动到前一个导航(无后退箭头)

时间:2015-11-30 14:50:12

标签: android android-intent toolbar

我有两项活动:HomeActivityEmailChangeActivity以及HomeActivity内的一些片段。我想要做的是在back navigation arrow工具栏中设置EmailChangeActivity。我有更多的活动,不知怎的,我设法制作了那个箭头(但是我直接从活动中创建了Intents,而不是从活动中的片段)。我为了得到那个箭头所做的是:

当我从EmailChangeActivity转到HomeActivity时,我会在HomeActivity片段中调用此内容:

    Intent intent = new Intent(getActivity().getApplicationContext(),
            ChangeEmailActivity.class);
    getActivity().startActivityForResult(intent, 1);

内部EmailChangeActivity我插入标准代码创建Toolbar并设置它:

// Setting Toolbar
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setTitle(getString(R.string.change_email_activity_name));
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().setDefaultDisplayHomeAsUpEnabled(true);

Manifext.xml我做了:

 <!-- Home Activity -->
    <activity
        android:name="com.example.nazwamarki.myapplication.HomeActivity"
        android:label="@string/home_activity_name"
        android:theme="@style/AppTheme.Normal">

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

    </activity>

<!-- Change Email Activity -->
<activity
    android:name="com.example.nazwamarki.myapplication.ChangeEmailActivity"
    android:label="@string/register_activity_name"
    android:theme="@style/AppTheme.Normal"
    android:parentActivityName=".HomeActivity">

    <meta-data
        android:name="android.support.PARENT_ACTIVITY"
        android:value="com.example.nazwamarki.myapplication.HomeActivity" />

</activity>

仍然没有结果。有什么帮助吗?

修改

我忘了添加我也包含在EmailChangeActivity中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    int id = item.getItemId();

    if (id == R.id.home) {
        NavUtils.navigateUpFromSameTask(this);

        return true;
    }

    return super.onOptionsItemSelected(item);
}

2 个答案:

答案 0 :(得分:0)

如果您未使用ActionBarActivity

mToolbar.setNavigationIcon(getResources().getDrawable(R.drawable.ic_action_back));
mToolbar.setNavigationOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // The intent to go back to HomeActivity
    }
});

如果 使用ActionBarActivity,那么您需要做的就是让Android将工具栏用作ActionBar。

setSupportActionBar(mToolbar);

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);

答案 1 :(得分:0)

看起来你错过了这部分:

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        NavUtils.navigateUpFromSameTask(this);
        return true;
    }
    return super.onOptionsItemSelected(item);
}

您可以在Android Developers- Providing up navigation

获取有关详细信息