Wil*_*ill 3 java android android-fragments
我在使用onOptionsItemSelectedAndroid 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
}
Run Code Online (Sandbox Code Playgroud)
这对片段非常有用 - onOptionsItemSelected @Overrides工作正常,返回SettingsActivity,但我想SettingsActivity在使用向上按钮时将控制返回到其父活动.
我已经阅读了文档,我明白了
虽然您的片段会为其添加的每个菜单项收到项目选择的回调,但当用户选择菜单项时,活动首先接收相应的回调.
这意味着我不能简单地为自己添加一个类似的@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>
Run Code Online (Sandbox Code Playgroud)
但这似乎根本没有做任何事情.
如果有的话,处理这个问题的好方法是什么?
在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);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1385 次 |
| 最近记录: |