2017-02-04 55 views
2

我是新來的android開發,並面臨一個問題: 我有一個正常的選項卡式MainActivity,並從Android Studio的設置活動模板創建SettingsActivity。 MainActivity是SettingsActivity的層次結構父項。Android Studio - 只有一個片段/無頭文件的活動

代碼開始在MainActivity.java的SettingsActivity:

Intent intent = new Intent(this, SettingsActivity.class); 
     startActivity(intent); 

我只希望有一個設置頁面。 由於Android指南「addPreferencesFromResource();」已被棄用並被首選標題取代。但是對於這些偏好標題,我在MainActivity和我的實際設置頁面(在pref_settings.xml中定義)之間又多了一個頁面。 在谷歌搜索如何擺脫這個額外的頁面後,我在SettingsActivity.java中找到了這個語句onCreate方法:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setupActionBar(); 

    getFragmentManager().beginTransaction() 
      .replace(android.R.id.content, new PillPreferenceFragment()) 
      .commit(); 
} 

那麼,它確實解決了我的問題。啓動SettingsActivity時將顯示pref_settings.xml。但後退按鈕不起作用了。它總是返回到SettingsActivity而不是MainActivity。所以這是一個無止境的循環。 有誰知道什麼是問題以及如何解決它?

我希望我的描述是可以理解的。如果您需要更多信息,請告訴我。

非常感謝! :)

+0

我無法理解proerply你想怎麼表達,但我想你問的是要回去的主要活動,如果用戶按下返回鍵。並且它沒有去,因爲你沒有實施後面按下。你有嗎? –

回答

2

我自己找到了解決方案。

我不得不在SettingsActivity.java添加以下代碼:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     this.finish(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
0

試試下面這段代碼:

Intent i = new Intent(getApplicationContext(), SettingsActivity.class); 
      startActivity(i); 
      finish(); 

在應用程序代碼中加入這一行的Android清單:

android:launchMode="singleTask" 

,不要忘了覆蓋後按下按鈕:

@Override 
    public void onBackPressed() { 
    super.onBackPressed(); 
    } 
+0

感謝您的快速響應。不幸的是它並沒有解決它。 在我的清單文件中,我注意到SettingsActivity的標記沒有任何意圖過濾器。這可能很重要嗎? – Lados

+0

通常意圖過濾器是針對默認活動的:http://stackoverflow.com/questions/3321514/what-are-intent-filters-in-android – rodoboss

相關問題