2014-01-23 99 views
0

我想了解使用意圖開闢的java.class活動教程。我可以管理使用此代碼開拓活動:如何關閉Android活動並返回到上一個/主要活動?

Intent in = new Intent(MainActivity.this, settingmenu.class); 

    startActivity(in); 
    setResult(Activity.RESULT_OK); 
    finish(); 

在這一活動中,我計劃在設置中使用edittexts,但首先我想了解如何簡單地返回到以前的活動。我的按鈕的onClick方法播放的方法是這樣的:

public void cancel() 
{ 
    this.finish(); 
    return; 
} 

但是,按下按鈕時,應用程序崩潰。我有什麼不同?幾個教程說使用finish(),但我感覺不到。

+1

你應該對崩潰的logcat輸出準確的響應 –

回答

2

我想了解如何簡單地返回到前一個活動

不要叫finish()在你的第一個Activity。然後,當用戶按下「返回」按鈕的第二Activity將被關閉,取出堆棧和第一ActivityonResum()將被調用。

Intent in = new Intent(MainActivity.this, settingmenu.class); 

startActivity(in); 
setResult(Activity.RESULT_OK); 
// finish(); don't call this and the Activity will remain on the stack 

至於崩潰,你就需要提供logcat的,很可能更多的代碼的

你可能會想了解the Stack將瞭解如何Activities是很長的路要走被放置並彈出。另外,我相信羅曼蓋伊在一次較早的Google I/O會議上就此發表了非常好的演講,對此非常有幫助。我會盡力發佈,但你可以谷歌這些條款,你會發現它。

Activity Docs

Google I/O Navigation and stack不是誰我還以爲是,但絕對值得關注。

+0

難道我supposted在我的第一個活動增加的onResume方法的活動?我沒有那樣做。 – jakeinmn

+0

沒有,你可以根據需要它的'Activity'方法'Override'。發佈到文檔的鏈接 – codeMagic

+0

看着logcat,它說它找不到我的onClick方法。我不認爲我爲該按鈕添加了onClickListener ...所以我認爲這就是爲什麼。 – jakeinmn

0

當您使用「完成」,您只需銷燬活動,它不會在堆棧中,如果你想去以前的活動,您需要使用另一個意圖給startActivity,或者不使用「完成「後的意圖。

+0

如果我用另一個意圖回去,不就是讓activty的兩個實例,因爲它被創造了,並再次提出? – jakeinmn

+0

您通過完成消滅它,這將是唯一一個 –

0

爲了解決我的問題,我擺脫了android:onClick =「save()」,而是在我的第二個活動中的onCreate方法中創建了一個onclicklistener。測試它,它工作。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.settingmenu); 

    Button tt = (Button)findViewById(R.id.savebutton); 
    tt.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       finish(); 

     } 
    }); 
0
btnBack.setOnClickListener(new OnClickListener(){private void onClick(){ 
Intent intent = new Intent(currentActivity.this, Main.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
startActivity(intent);}});