Android:我似乎无法将自定义工具栏的后退箭头设置为设备的物理后箭头

时间:2015-06-29 19:14:43

标签: android android-toolbar

我有后退箭头并且工作但不仅仅是完成activityB并返回到用户在activityA中的上一个视图(片段)。它会关闭activityB并重新加载activityA,这意味着你必须回过几个菜单才能回到原来的位置。

物理后退箭头完全符合我的要求,因为它只是关闭了activtyB并将用户放回到他们移动到activtyB之前最初的位置。

这是我目前工具栏后退箭头的代码,但也许我还没有完全掌握物理后退箭头的工作原理。我感谢任何建议!

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

2 个答案:

答案 0 :(得分:1)

对于每个活动,您必须在Android清单文件中添加父活动。

    <activity
      android:name="com.example.myfirstapp.ActivityC"
      android:label="@string/title_activity_display_message"
      android:parentActivityName="com.example.myfirstapp.MainActivity" >
      <!-- The meta-data element is needed for versions lower than 4.1 -->
      <meta-data
         android:name="android.support.PARENT_ACTIVITY"
         android:value="com.example.myfirstapp.MainActivity" />
    </activity>

如果您将MainActivity指定为ActivityC的父级,则它将转到MainActivity。如果您指定了ActivityB,它将在ActionBar中点击后退按钮移动到ActivityB。

有关详情,请参阅here

答案 1 :(得分:0)

您需要覆盖活动的onOptionsItemSelected方法:

    SharedPreferences sharedPrefs =  PreferenceManager.getDefaultSharedPreferences(this);
    boolean playSound = sharedPrefs.getBoolean("sound_on_create", false);
    boolean vibrate = sharedPrefs.getBoolean("vibrate_on_create", false);
    boolean removeOnklick = sharedPrefs.getBoolean("remove_onclick", true);

    //testing:
    Toast.makeText(this, "values: " + playSound + " " + vibrate + " " + removeOnklick, Toast.LENGTH_LONG).show();