Android - 如何从布局返回上一个活动

时间:2013-11-22 12:23:07

标签: android android-layout

此处我无法打开上一个活动,即按下my_layout1

这是我的代码:

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();
    }
}

请向我提供有关如何从当前布局打开上一个活动布局的建议。

9 个答案:

答案 0 :(得分:0)

当您按下时,您正在完成当前所有布局的活动。在背面按下时,您应该创建新意图并开始此活动。或

setContentView(R.layout.my_layout1);

答案 1 :(得分:0)

此处您只有1个活动,而不是2.在onClick中再次调用setContentView不会创建新活动或向backstack添加任何内容。因此,当您单击后退或调用finish()时,活动就会结束。

如果要动态膨胀活动中的各个层,请查看使用碎片(您可以将碎片添加到后堆栈以获得按下时所需的结果)。但是,更简单的选择是导航到onClick中的另一个活动类(通过意图),在其中膨胀my_Layout2。

因此,创建另一个活动类(例如Main2),类似于你在其中膨胀my_Layout2的活动类(不要忘记在清单中注册Main2)。然后从主点上的onClick:

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

答案 2 :(得分: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();
  }

答案 3 :(得分: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);
}

答案 4 :(得分:0)

创建一个按钮,试试这个:

@覆盖

public void onClick(View arg0) {

   onBackPressed();


}

答案 5 :(得分:0)

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

答案 6 :(得分:0)

而不是使用此

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

使用此

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

这会关闭您当前的布局并显示最顶层的布局

答案 7 :(得分:-1)

请使用以下代码

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

       finish(); 
     return true;  
   }  

答案 8 :(得分:-1)

点击后退按钮。

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