2016-12-25 7 views
0

問題があり、2つの異なるレイアウトにある2つの別個のボタンの2つのonClickListenerを設定できないようです発生する例外。2つの異なるレイアウトにあるボタンで2 onClickListener()を設定すると例外が発生する

btnClickToSecondPageボタンはactivity_main.xmlレイアウトにあり、btnObjClickToGoToFirstPageボタンはsecond_activity.xmlレイアウトにあります。

私のプログラムのためのJavaコードは、私は、問題の感謝を整流助けてください、ここで

public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(getWindow().FEATURE_NO_TITLE); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 

    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 

    setContentView(R.layout.activity_main); 

    Button btnObjClickToGoToSecondPage = (Button) findViewById(R.id.btnClickToSecondPage); 
    Button btnObjClickToGoToFirstPage = (Button) findViewById(R.id.btnChangetoFirstPage); 


    btnObjClickToGoToFirstPage.setOnClickListener(
     new Button.OnClickListener(){ 
      @Override 
      public void onClick (View v) 
      { 
       setContentView(R.layout.second_activity); 
      } 
     } 
    ); 
    btnObjClickToGoToSecondPage.setOnClickListener(
      new Button.OnClickListener(){ 
       @Override 
       public void onClick (View v) 
       { 
        setContentView(R.layout.activity_main); 
       } 
      } 
    ); 
} } 

の下に位置しています。

+0

私はクリックリスナー内部setContentViewでその問題を考えます。最初のレイアウトでボタンを初期化しました。最初のクリック後、レイアウトは変更され、ボタンには有効なコンテキストがありません。 setContentViewsをonclickリスナー内のログに置き換えるようにしてください。 – Vigen

答えて

0

View.Onclickリスナーは、それは、Androidでページを切り替え、適切な方法ではありませんリスナー

btnObjClickToGoToFirstPage.setOnClickListener(
     new View.OnClickListener(){ 
      @Override 
      public void onClick (View v) 
      { 
       setContentView(R.layout.second_activity); 
      } 
     } 
    ); 
+0

ボタンを両方別のレイアウトに配置すると、プログラムによって例外が発生することがわかりました。両方のボタンが同じレイアウトにある場合、このコードの例外はありません。 –

+0

両方のボタンが異なるレイアウトに配置されている場合に、プログラムによって例外が発生することがわかりましたので、質問を編集しました。両方のボタンが同じレイアウトにある場合、2 onClickListener()を設定することも例外ではありません。 –

0

をButton.onclickない実装してください。インテントでページを切り替えるには、2つのアクティビティを使用します。

Intent newPage = new Intent (this, YourActivityNameForNewPage.class); 
startActivity(newPage); 

ボタンのonClick()に上記コードを入力してください。

0

新しいページを表示するには、新しいアクティビティを開始するか、新しいフラグメントを開始します。

contentViewを変更することは、ではなく、これに近づく正しい方法であり、実行しないでください。

アクティビティhereに関するドキュメントを参照してください。あなたがここにSecondActivityと呼ばれる別のActivityを持っていると仮定すると

は、あなたがそれを起動する方法を次のとおりです。

btnObjClickToGoToSecondPage.setOnClickListener(
     new Button.OnClickListener(){ 
      @Override 
      public void onClick (View v) 
      { 
       Intent intent = new Intent(MainActivity.this, SecondActivity.class); 
       startActivity(intent); 
      } 
     } 
); 

そして、あなたはそれがsecond_activity.xml

で、新しい活動のXMLでレイアウトを定義します

fragmentを使用してすべてのレイアウトが似ている場合は、適切なオプションです。

基本的に新しいアクティビティやフラグメントを開始して新しいものを表示したり、データをボタンのonClick()で動的に変更したりします。

この質問は、さらにあなたの疑問をクリアすることがあります。 What is setContentView(R.layout.main)?

関連する問題