2013-11-22 22 views
-1

在這裏,我無法打開以前的活動,即my_layout1上回壓。Android的 - 我怎樣才能回到以前的活動從佈局

這是我的代碼:

public class Main extends Activity { 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.my_layout1); 
     Button button= (Button) findViewById(R.id.buttonId); 
     button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      setContentView(R.layout.my_Layout2); 
     } 
     }); 
    } 

    @Override 
    public void onBackPressed() { 
     finish(); 
    } 
} 

請給我如何從當前佈局中打開以前的活動佈局的建議。

+0

此代碼是OK,但事實的你強迫'光潔度'從'onBackPressed'。 Activity的'onBackPressed'首先檢查是否有任何片段要被彈出。你有什麼佈局? – gunar

+0

你是如何從活動1來到活動2你是否完成第一個活動,然後你必須重新啓動意圖.. – pavanmvn

+0

沒有片段,點擊後面的按下去前一個活動,再一次點擊然後關閉應用程序 –

回答

0

當您按下回你完成當前活動與它所有的佈局。在後面按下你應該創建新的意圖,並開始這項活動。或

setContentView(R.layout.my_layout1); 
+0

謝謝,但我嘗試了,即使我知道按要求是不是... –

+0

默認情況下,我開始了一個活動與一個樣本佈局..在同一活動點擊按鈕我開始另一個佈局..現在我的問題是第一次回來按下我怎麼能去以前的佈局? –

0

看來你只有1活動在這裏,不2.您的onClick不會創建一個新的活動或添加任何東西在堆棧中再次調用的setContentView。所以,當你點擊返回,或調用finish(),活動結束簡單。

如果你想在活動中動態地膨脹各層,考慮使用片段(您可以片段添加到後面堆得到壓制回來時,你想要的結果)。然而,更容易的選擇是(通過意向),在其中膨脹my_Layout2導航到你的onClick另一個活動類。

因此,創建另一個活動類(例如Main2),類似於您在其中充氣my_Layout2(不要忘記將Main2註冊到清單中)。然後從你的onClick主:

Intent intent = new Intent(Main.this, Main2.class); 
startActivity(intent); 
+0

我不知道爲什麼你有-1 downvote,因爲它似乎你是唯一一個正確理解Maneti的人。據我瞭解他,他有1活動的佈局,他改變了點擊一個按鈕,而不是打開一個新的活動。 – banzai86

0

onBackPressed,而不是在完成活動改變你的佈局my_layout1的。

聲明一個全局變量int count=0;

在你onClick加入這一行count=0;

更改onBackPressed這樣的:

@Override 
public void onBackPressed() { 
    if(count==0){ 
    ++count; 
    setContentView(R.layout.my_layout1); 
    } 
    else 
    finish(); 
    } 
-1

,請使用以下代碼

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    //replaces the default 'Back' button action 
    if(keyCode==KeyEvent.KEYCODE_BACK) 
    { 

     finish(); 
    return true; 
    } 
+0

他沒有兩個活動,但兩個佈局。你沒有正確的問題。 – Naddy

+0

在點擊後退按鈕時完成() – prakash

-1

認沽它在後退按鈕上單擊。

Intent intent = new Intent(Main Class.this, 
Name of classactivity on which you want to go.class); 
startActivity(intent); 
+0

因爲android管理自己的操作,所以不需要在那裏放置意圖。 –

0

,如果你想回到以前的活動集flagLayoutControltrue,然後下面寫代碼

public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    // pass to if back is pressed  
    if (keyCode == KeyEvent.KEYCODE_BACK) 
    { 
     if(flagLayoutControl) 
     { 
       Intent myIntent = new Intent(currentActivity.this, <<WhatYouWant>>.class); 
       startActivityForResult(myIntent, 0); 
      finish(); 
     } 
     else 
     { 

      Intent myIntent = new Intent(currentActivity.this, currentActivity.class); 
        startActivityForResult(myIntent, 0); 
       finish(); 

     } 

     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
0

創建一個按鈕,試試這個:

@覆蓋

public void onClick(View arg0) { 

    onBackPressed(); 


} 
0
@Override 
public void onBackPressed() 
{ 
    super.onBackPressed(); 
    startActivity(new Intent(my_Layout2.this, my_layout1 .class)); 
    my_Layout2.this.finish();   
} 
0

不使用該

@Override 
    public void onClick(View v) { 
     setContentView(R.layout.my_Layout2); 
    } 

使用此

@Override 
    public void onClick(View v) { 
     this.finish(); 
    } 

這接近當前的佈局,並顯示最上面的佈局

相關問題