我在使用onOptionsItemSelected
時遇到了Android Studio默認的「設置活動」(其中extends AppCompatPreferenceActivity
)的問題。該活動的重要組成部分是:使用onOptionsItemSelected使用PreferenceFragments從PreferenceActivity上移
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
將控制返回到其父活動時向上按鈕用來。
我讀過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中生成PreferenceActivitiy。然而,我目前只有一個層次的深度,但我打算至少有2個,所以我現在無法告訴它是否仍然有效。我猜是吧 – xxtesaxx