我使用时遇到问题onOptionsItemSelected
使用 Android Studio 的默认“设置活动”(extends AppCompatPreferenceActivity
)。活动的重要部分是:
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
@Override
工作顺利,返回SettingsActivity
, 但我想要SettingsActivity
使用向上按钮时将控制返回到其父活动。
我读了文档 http://developer.android.com/guide/components/fragments.html我明白
尽管您的片段会为其添加的每个菜单项接收一个项目选择的回调,但当用户选择菜单项时,该活动首先接收相应的回调。
这意味着我不能简单地添加类似的@Override
(用不同的Intent
) to 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)