如何做回到之前布局的后退按钮?

时间:2013-09-09 11:35:47

标签: java android

我是android的新手。我想用按钮询问有关Link 2布局的问题。我有2 xml布局,第一个布局可以链接到第二个布局,但第二个布局不能回到第一个布局。请帮帮我。

下面是我的代码......

activity_main.xml中

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

<Button
    android:id="@+id/button1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/textView1"
    android:layout_marginTop="120dp"
    android:text="Link to page 1" />

</RelativeLayout>

page1.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Page 1 test"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<Button
    android:id="@+id/button2"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Back to main page" />

</LinearLayout>

MainActivity.java

package com.example.linktest2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Button btn1 =(Button)findViewById(R.id.button1);




    btn1.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent();

            myIntent.setAction(Intent.ACTION_VIEW);

               myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            setContentView(R.layout.page1);

        }
    });

  }}

page1.java

package com.example.linktest2;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class page1 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page1);

    Button btn1 =(Button)findViewById(R.id.button2);




    btn1.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent myIntent = new Intent();

            myIntent.setAction(Intent.ACTION_VIEW);

            myIntent.setData(android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
            setContentView(R.layout.activity_main);

        }
    }); 

}}

5 个答案:

答案 0 :(得分:1)

你做错了。

要从MainActivity转到page1(按照惯例,它应该是Page1),您应该启动一个新的Activity(而不是更改当前活动的contentview)。然后从Page1返回到MainActivity,您可以以编程方式完成()活动,或者用户可以触摸返回。

答案 1 :(得分:0)

通常,android会自行处理。 但是,您可以在第二个活动中覆盖OnBackPressed并启动导致第一个活动的意图

你可以这样做其他活动:

Intent intent = new Intent(SecondActivity.this,MainActivity.class);
startActivity(intent);

对于每个XML,您需要有另一个Activity。

答案 2 :(得分:0)

您可以将两个布局保持在相同的布局文件中,并相应地显示或隐藏布局

另一种方法是你可以创建两个包含两个单独布局的活动,并使用intent和start活动点击按钮加载第二个布局,如下所示

要转到其他活动,您可以这样做:

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

答案 3 :(得分:0)

在主要活动中:

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);


      Button btn1 =(Button)findViewById(R.id.button1);

    btn1.setOnClickListener(new Button.OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent intent = new Intent(getApplicationContext(),page1.class);
                startActivity(intent);
                finish();



            }
        });

}

替换此

在您的Page1活动中替换此

        public class page1 extends Activity {
     /** Called when the activity is first created. */
   @Override
   public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page);

    Button btn1 =(Button)findViewById(R.id.button2);
    btn1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intent = new Intent(getApplicationContext(),MainActivity.class);
            startActivity(intent);
            finish();

        }
    }); 
     }
               }

希望这会对你有所帮助

答案 4 :(得分:0)

如果您想从活动B返回活动A并获得一些结果,您可以这样使用  活动B

Intent returnIntent = new Intent();
returnIntent.putExtra("result",result);
setResult(Activity.RESULT_OK,returnIntent);
finish();

活动A

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        if (requestCode == 1) {
            if(resultCode == Activity.RESULT_OK){
                String result=data.getStringExtra("result");
            }
            if (resultCode == Activity.RESULT_CANCELED) {
                //Write your code if there's no result
            }
        }
}