2016-12-21 1 views
-4

두 개의 레이아웃으로 하나의 활동이 있는데, 하나는 기본 레이아웃이고 다른 하나는 레이아웃 2입니다. 두 레이아웃 파일에는 각각 하나의 버튼이 있습니다. 기본 레이아웃에서 버튼을 누르면 레이아웃 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> 

레이아웃이

0,123,516

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

코드를 시도하지 않았습니다. 문제가 있으면 의견을 말하십시오.

관련 문제