0

私はアンドロイドが初めてです..ボタンを使用したLink 2レイアウトについて質問したいです。2 つの xml レイアウトがあり、最初のレイアウトは 2 番目のレイアウトにリンクできますが、2 番目のレイアウトは 1 番目のレイアウトに戻ることができません。私を助けてください。

以下は私のコードです...

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 にする必要があります)、(現在のアクティビティの contentview を変更するのではなく) 新しいアクティビティを開始する必要があります。次に、Page1 から MainActivity に戻るには、アクティビティをプログラムで finish() するか、ユーザーが [戻る] をタップします。

于 2013-09-09T11:42:40.917 に答える
1

両方のレイアウトを同じレイアウト ファイルに保持し、それに応じてレイアウトを表示または非表示にすることができます。

また、別の方法として、2 つの別個のレイアウトを含む 2 つのアクティビティを作成し、インテントを使用してボタンのクリック時に 2 番目のレイアウトをロードし、以下のようにアクティビティを開始することもできます。

他のアクティビティに移動するには、次のようにできます。

     Intent intent = new Intent(this,SecondActivity.class);
     startActivity(intent);
于 2013-09-09T11:44:13.420 に答える
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

通常、アンドロイドはそれ自体を扱います。ただし、2 番目のアクティビティで OnBackPressed をオーバーライドし、最初のアクティビティにつながるインテントを起動することができます

次のようにできる他のアクティビティに移動します。

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

XML ごとに別のアクティビティが必要です。

于 2013-09-09T11:42:05.553 に答える