2012-06-26 43 views
0
  • 我正在創建一個應用程序,需要在開始顯示活動之前首先設置一些設置 。 我希望應用程序檢查包含這些設置的首選項文件是否存在,如果存在,請移至 特定活動或保留在主要活動中(因爲設置 活動是我的主要活動)。如果某些條件滿足,在啓動時啓動備用活動

  • 我試圖在啓動時使用startactivty(),但它示出了用於幾分之一秒的設置 菜單上移動到顯示 活動之前。

  • 我應該怎麼做?

    我嘗試下面的代碼:

    super.onCreate(savedInstanceState); 
        setContentView(R.layout.main);   
         SharedPreferences prefsfile = getSharedPreferences("myfile",0); 
    
         if(prefsfile!=null & Timetablledisplay.flag==0){ 
          Intent i=new Intent(ProjectBunkitActivity.this,Timetablledisplay.class); 
          startActivity(i); 
         } 
    
+0

發佈您的代碼。你早些時候嘗試過什麼? – user370305

+0

您在調用'startActivity(i)'關閉當前活動後是否嘗試添加'finish()'標記? – gkiar

+0

代碼運行良好,但我需要啓動TimetableDisplay活動而不顯示設置活動 – jaisonDavis

回答

1

對於這個問題的潛在解決方法的選擇將採取稍微不同的方法:

而不是發射到設置,然後決定無論是否要進入Timetablleddisplay活動,您都可以從一個空白活動開始,只是簡單地決定要啓動哪個活動。

的活動可能是這樣的:

super.onCreate(savedInstanceState);  
    SharedPreferences prefsfile = getSharedPreferences("myfile",0); 

    if(prefsfile!=null && Timetablledisplay.flag==0){ 
     Intent i=new Intent(CURRENT.this,Timetablledisplay.class); 
     startActivity(i); 
     finish(); 
    } 
    else 
    { 
     Intent i=new Intent(CURRENT.this,ProjectBunkitActivity.class); 
     startActivity(i); 
     finish(); 
    } 
+0

此解決方案是否有效? – gkiar

+0

@iKiar,你爲什麼需要在這裏調用'setContentView'? –

+0

感謝您指出,我剛剛從上面複製了OP代碼,並忘記刪除它。 – gkiar

2

你應該在onCreate()Activityfinish())的LAUNCHERActivity呼叫startActivity()需要時調用setContentView()之前。這樣,新的Activity將在嘗試膨脹任何佈局之前在「幕後」啓動。

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    SharedPreferences prefs = getSharedPreferences("myFile", 0); 

    if(prefs != null && ActivityOne.flag == 0) { 
     Intent i = new Intent(this, ActivityOne.class); 
     startActivity(i); 
    } else { 
     Intent i = new Intent(this, ActivityTwo.class); 
     startActivity(i); 
    } 

    finish(); 
} 
相關問題