2013-04-17 53 views
0

我正在開發一個應用程序,在該應用程序中,我必須在應用程序生命週期中僅顯示一次活動。在應用程序中僅調用一次活動,並在應用程序被重新啓動後再次顯示它

我在做什麼是我MainActivity.java我打電話的Activity 1,所以當我在我的應用程序移動後,每當我回來MainActivity.javaActivity 1被調用。我只想展示一次。

再次Activity 1應該顯示當用戶殺死應用程序並重新啓動它。

下面是我在做什麼,我MainActivity.java

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    startActivity(new Intent(MainActivity.this, 
       Activity1.class)); 

    } 

我曾嘗試使用下面的代碼,但是當被安裝在第一次應用程序只運行一次。

private boolean isFirstTime() { 
    SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
    boolean ranBefore = preferences.getBoolean("RanBefore", false); 
    if (!ranBefore) { 
     // first time 
     SharedPreferences.Editor editor = preferences.edit(); 
     editor.putBoolean("RanBefore", true); 
     editor.commit(); 
    } 
    return !ranBefore; 
} 

如何修改上面的代碼,以便滿足我的要求。

任何形式的幫助將不勝感激。

+0

你的意思是在應用程序生命週期中一次或在用戶啓動時一次第一個尖牙的應用程序,並再也沒有? – Simon

+0

一旦只有用戶啓動應用程序,我想顯示活動。如果用戶正在移動我的活動並且他來到MainActivity,我不想再向用戶顯示Activty1。而且,當用戶退出應用程序並再次重新啓動應用程序時,再次顯示Activity1將不再顯示Activity1,除非他退出應用程序。 – Anupam

回答

0

我已經使用SharedPreferences解決了這個問題。我所做的是在Splash上​​我在SPMainActivity中輸入了一些數值,我檢查瞭如果數值匹配顯示活動,否則不要打開對話框。並在keyCodeBack(),我已經清除SP,這有助於我滿足我的要求。

0

變化

return !ranBefore 

return ranBefore 

它看起來對我說,你總是返回相同的東西,而不是你初始化變量。此外,您可以將代碼直接在該方法中啓動Activity。那麼你甚至不必擔心return聲明。它會在你SharedPreferences

編輯修改後的值

,你可以在你的onCreate()SharedPreferences值設置爲false只是不會再運行它。這將工作,如果你不完成你的Activity當你去到另一個,如果你的主要Activity,那麼你可能再也不想,直到退出應用程序

+0

改變了這一點,但沒有解決我的問題。同樣的情況即將出現。 – Anupam

+0

我只想直到顯示Activity1一次,除非應用程序關閉。無論用戶來到MainActivity多少次。當用戶退出應用程序後再次重新啓動時,再次向他顯示Activity1,然後直到他沒有進入應用程序。你有問題嗎? – Anupam

+0

我現在要做。我已編輯我的回答 – codeMagic

0

您應該設置ranBefore爲false onDestroy完成它

@Override 
public void onDestroy() 
{ 
    SharedPreferences preferences = getPreferences(MODE_PRIVATE); 
    SharedPreferences.Editor editor = preferences.edit(); 
    editor.putBoolean("RanBefore", false); 
    editor.commit(); 
} 
+0

如何將'ranBefore'設置爲false?我應該把上面的代碼放在'private boolean isFirstTime()'或'if(!ranBefore)'裏面? – Anupam

+0

上面的代碼設置ranBefore爲false,將這些代碼放入onDestroy() –

+0

這對我而言並不適用。在關閉我的應用程序並將其導航到另一個活動以主要活動後,它又重複其自身,意圖通過。 – Anupam

0

使用共享偏好..

和殺死活性,使用class.finish()在你的onClick()..

相關問題