2016-12-21 8 views
-4

2つのレイアウトで1つのアクティビティがあります。メインレイアウトは1つで、もう1つのレイアウト名はlayout2です。両方のレイアウトファイルにはそれぞれ1つのボタンが含まれています。メインレイアウトのボタンを押すとレイアウト2になりますが、レイアウト2のボタンをクリックしてメインレイアウトに戻っても問題はありません。アクティビティからレイアウト2ボタンのメインレイアウトを表示する方法は?

MainActivity

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.Button; 

    public class MainActivity extends AppCompatActivity { 
    Button button1,button2; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     button1=(Button)findViewById(R.id.button1); 
     button1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       setContentView(R.layout.layout2); 

      } 
     }); 

     LayoutInflater inflater=this.getLayoutInflater(); 

     View view=inflater.inflate(R.layout.layout2,null); 

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

     button2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       setContentView(R.layout.activity_main); 
      } 
     }); 


    } 
} 

これらは

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_main" 
    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="com.example.lidiawood.myapplication.MainActivity"> 

    <Button 
     android:text="Go to layout 2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/textView" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_marginTop="52dp" 
     android:id="@+id/button1" /> 
</RelativeLayout> 

レイアウト2

Mainlayoutを表示するには、レイアウトファイルです

<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:text="go to main layout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:layout_marginLeft="14dp" android:layout_marginStart="14dp" android:layout_marginTop="40dp" android:id="@+id/button2" /> </RelativeLayout> 
は、いずれかは、私は、レイアウトのcomponnentからミアンレイアウトに表示を得ることができますどのように私を助けてください2

+0

エラーが発生しました – user970481

+0

結果は何ですか? – Athul

答えて

0

onClickイベントリスナがないでボタンに、膨張したビュー内のボタンに取り付けられています。アクティビティビュー。同じレイアウトを使用していても問題はありません。別のボタンです。

レイアウトを変更するときに、一般的に言えば、異なる断片やアクティビティが必要なため、このような状況は起こりません。このようにコンテンツビューを変更するのは良い考えではありません。まだコードを使用する場合は、次のものが必要です。

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

private void onContentViewOneInflated() { 
    Button button1 = (Button) findViewById(R.id.button1); 
    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setContentView(R.layout.layout2); 
      onContentViewTwoInflated(); 
     } 
    } 
} 

private void onContentViewTwoInflated() { 
    Button button2 = (Button) findViewById(R.id.button2); 
    button2.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      setContentView(R.layout.activity_main); 
      onContentViewOneInflated(); 
     } 
    } 
} 

私はコードを試していません。何か問題がある場合は、コメントしてください。

関連する問題