0

我是 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);

        }
    }); 

}}

4

5 回答 5

1

你这样做是错的。

要从 MainActivity 转到 page1(按照约定应该是 Page1),您应该启动一个新的 Activity(而不是更改当前 Activity 的内容视图)。然后要从 Page1 返回到 MainActivity,您可以通过编程方式完成()该 Activity,或者用户可以触摸 Back。

于 2013-09-09T11:42:40.917 回答
1

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

另一种方法是您可以创建两个包含两个单独布局的活动,并使用意图和启动活动在单击按钮时加载第二个布局,如下所示

要进行其他活动,您可以这样做:

     Intent intent = new Intent(this,SecondActivity.class);
     startActivity(intent);
于 2013-09-09T11:44:13.420 回答
0

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

去其他活动你可以这样做:

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

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

于 2013-09-09T11:42:05.553 回答
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();

        }
    }); 
     }
               }

希望对你有帮助

于 2013-09-09T11:51:29.823 回答
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
            }
        }
}
于 2016-03-29T09:15:38.973 回答