java – 使用onOptionsItemSelected从PreferenceArag和Preferenc
我在使用
Android Studio默认的“设置活动”(扩展AppCompatPreferenceActivity)时使用onOptionsItemSelected时遇到了麻烦.活动的重要部分是:
public class SettingsActivity extends AppCompatPreferenceActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setupActionBar(); } private void setupActionBar() { ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { // Show the Up button in the action bar. actionBar.setDisplayHomeAsUpEnabled(true); } } public static class GeneralPreferenceFragment extends PreferenceFragment { // [...] @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { startActivity(new Intent(getActivity(),SettingsActivity.class)); return true; } return super.onOptionsItemSelected(item); } } // two more fragments } 这对于片段非常有用 – onOptionsItemSelected @Overrides很好用,返回到SettingsActivity,但是当使用向上按钮时,我希望SettingsActivity将控制权返回给它的父活动. 我读过the documentation,我明白了
这意味着我不能简单地将类似的@Override(使用不同的Intent)添加到SettingsActivity本身来处理我想要的情况,以免片段返回到父活动. 我试过通过AndroidManifest.xml处理这个: <activity android:name=".SettingsActivity" android:label="@string/title_activity_settings" android:parentActivityName=".BlahBlahActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.appthing.BlahBlahActivity" /> </activity> 但这似乎根本没有做任何事情. 如果有的话,处理这个问题的好方法是什么? 解决方法
在Android Studio onOptionsItemSelected方法创建的模板中属于片段.
我通过评论它们并为重写onBackPressed的活动编写onOptionsItemSelected方法来解决 @Override public void onBackPressed() { super.onBackPressed(); } @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); if (id == android.R.id.home) { onBackPressed(); return true; } return super.onOptionsItemSelected(item); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |