2016-03-04 55 views
2

我有3項活動FirstActivity,SecondActivity和ThirdActivity。 FirstActivity會導致SecondActivity導致ThirdActivity。我希望能夠在FirstActivity和SecondActivity,FirstActivity和ThirdActivity之間來回移動。有沒有更好的方法來完成另一項活動的活動?

以下是我已經實現:

FirstActivity:

在FirstActivity我有一個onClick方法 'goToSecondActivity',開始SecondActivity

public void goToSecondActivity(View view){ 
     Intent i = new Intent(this, SecondActivity.class); 
     final EditText firstText = (EditText) findViewById(R.id.firstText); 
     String userMessage = firstText.getText().toString(); 
     if(!"".equals(userMessage)) 
     i.putExtra("firstMessage",userMessage); 

     startActivity(i); 
    } 

enter image description here

SecondActivity:

在SecondActivity再次我有一個onClick方法 'goToThirdActivity',這將啓動ThirdActivity

public void goToThirdActivity(View view){ 
     Intent i = new Intent(this , ThirdActivity.class); 
     startActivity(i); 
    } 

enter image description here

ThirdActivity:

在ThirdActivity我有兩個的onClick方法 'backToFirstActivity'和'backToPreviousActivity'在兩個不同的按鈕上

enter image description here

On ThirdActivity當我點擊'返回到第一個活動'按鈕時,我想回到FirstActivity。

我做了什麼:

SecondActivity:

我已經聲明爲static變量

static SecondActivity secondActivityMain; 

而且在onCreate方法爲它分配:

protected void onCreate(Bundle savedInstanceState) { 
     --- 
     --- 
     secondActivityMain = this; 
     --- 
     --- 

} 

ThirdActivity:

使用靜態變量結束SecondActivity 「SecondActivity.secondActivityMain.finish();」

public void backToFirstActivity(View view) { 
     Toast.makeText(getApplicationContext(), "Third: finished second activity ", 
       Toast.LENGTH_SHORT).show(); 

     new Handler().postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       SecondActivity.secondActivityMain.finish(); 
       ThirdActivity.this.finish(); 
      } 
     }, 2000); 

    } 

我的問題是:

1.是否有更好的方法來從另一個活動完成的活動?

2.這種方式是正確的嗎?

+0

請檢查FLAG_ACTIVITY_CLEAR_TOP。 [http://stackoverflow.com/questions/7385443/flag-activity-clear-top-in-android](http://stackoverflow.com/questions/7385443/flag-activity-clear-top-in-android ) –

回答

1
  1. 有沒有更好的辦法從另一個活動完成的活動?

,您所做的一切用在Activitystatic instace這很容易導致內存泄漏問題。 只有在必要和非常小心的情況下,纔會使用static關鍵字。

更好的方式是使用BroadCastreceiver

所以,你需要做的是建立在你的第一和第二活性廣播接收器和whenver你要完成這些活動。使用​​方法。

你需要搜索它如何在Android中工作Broadcastreceiver

  1. 這種方式是正確的嗎?

沒有,你做的方式是不正確的。

+0

感謝您的回答。 – Pallavi

+0

我有很多搜索將我的示例轉換爲廣播,但我沒有得到如何將我的SecondActivity轉換爲接收廣播。請建議 – Pallavi

2

如果你想從ThirdActivity去FirstActivity使用這項意圖用標誌「FLAG_ACTIVITY_CLEAR_TOP」,它會清除第三和第二活動

Intent intent = new Intent(ThirdActivity.this, MainActivity.class); 
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
      startActivity(intent); 

對於FirstActivity在Manifeast文件,如果你指定的android:launchMode =「singleTop 「那麼當你從ThirdActivity來到FirstActivity時,OnCreate()方法將不會被調用 如果你沒有在manifest文件中指定lanuhMode,那麼將再次調用OnCreate

相關問題