2011-05-27 81 views
1

單擊主頁按鈕並重新啓動應用程序時,它將從第一個屏幕開始,而不是停留在我離開的屏幕上。未在Android中運行的活動

感謝您的幫助。

public class WelcomeScreen extends Activity implements OnClickListener { 
    /** Called when the activity is first created. */ 
    private Button signUp,login; 
    private RelativeLayout relative; 
    GlobalVariable global; 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
     { 
      requestWindowFeature(Window.FEATURE_NO_TITLE); 
      requestWindowFeature(Window.FEATURE_PROGRESS); 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      global=(GlobalVariable)getApplicationContext(); 
      signUp=(Button)findViewById(R.id.signUp); 
      login=(Button)findViewById(R.id.login); 
      relative=(RelativeLayout)findViewById(R.id.welcome_panel); 
      signUp.setOnClickListener(WelcomeScreen.this); 
      login.setOnClickListener(WelcomeScreen.this); 
     } 
    @Override 
    public void onResume() 
    { 
     super.onResume(); 
     Toast.makeText(WelcomeScreen.this, " onResume called", Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public void onPause() 
    { 
     super.onPause(); 
     Toast.makeText(WelcomeScreen.this, " onPause called", Toast.LENGTH_SHORT).show(); 
    } 
    /* 
    * Button Onclick event for signup and login button 
    * 
    */ 
    public void onClick(View v) 
    { 

      if(v==signUp) 
      { 
       Intent signupPanel=new Intent(WelcomeScreen.this,SignupPanel.class); 
       startActivity(signupPanel); 
       callNull(); 
      } 
      else if(v==login) 
      { 
       //start a login screen    
       Intent loginPanel=new Intent(WelcomeScreen.this,LoginPanel.class); 
       startActivity(loginPanel); 
       callNull(); 
      } 

    } 

    public void callNull() 
    { 
     this.finish(); 
    } 
    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     Toast.makeText(WelcomeScreen.this, " on destroy called", Toast.LENGTH_SHORT).show(); 
     System.gc(); 
     relative.setBackgroundDrawable(null); 
     login.setBackgroundDrawable(null); 
     signUp.setBackgroundDrawable(null); 

    } 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
     { 
       if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) 
       { 
        // android.os.Process.killProcess(android.os.Process.myPid()); 


        return true; 
       } 

       return super.onKeyDown(keyCode,event); 
     } 

} 
+0

你能告訴我們你在你的onStop /的onDestroy /的onPause方法和/或使用的onkeydown的代碼? – WarrenFaith 2011-05-27 10:28:09

+0

我編輯了答案。 – Kakey 2011-05-27 10:40:15

+0

只是爲了確保我的理解正確:如果您按主頁鍵,主屏幕不會出現,但您的應用程序的第一個屏幕呢? – WarrenFaith 2011-05-27 11:00:25

回答

1

請檢查您是否有處理家庭按鍵事件。如果你已經寫了你的主鍵,按wvent,那麼我認爲這個問題可能會發生。

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     // TODO Auto-generated method stub 

     if (keyCode == KeyEvent.KEYCODE_HOME){ 
      // did you write your code to launc your application here 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

感謝 迪帕克

+0

我只用後面的動作。不是主鍵。 – Kakey 2011-05-27 10:38:23

1

檢查清單文件。您的活動可能具有noHistory=true屬性。如果沒有,那麼檢查標誌在哪裏開始活動。

+0

這並不能解釋爲什麼應用程序不會進入後臺。 – WarrenFaith 2011-05-27 10:59:20

+0

我以爲我誤解了這個問題,但在金達評論後我不確定。 – pawelzieba 2011-05-27 11:31:50

+0

我不確定問題是什麼......非常混亂...... – WarrenFaith 2011-05-27 12:17:11

1

我覺得這是國家治理問題。只需創建一個hashmap並存儲它們的最新視圖。並寫出一個將設置視圖的條件。如果在hashmap中沒有條目,那麼先顯示第一個屏幕,然後顯示所需的屏幕。

如果你能爲國家mantainance更好的主意,那麼西港島線是更好 感謝 迪帕克