2016-07-12 7 views
2

クリックリスナーで複数のボタンを使用できるようにするにはどうすればよいですか。私は2つのボタンで試してみましたが、クリックリスナーを既に定義していたので、クリックリスナーで別のボタンを作成することはできませんでした。私がこれまで持っているコードは次のとおりです。複数のボタンリスナーに複数のボタンを追加する

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentTransaction; 
import android.view.View; 
import android.widget.LinearLayout; 

public class MainActivity extends AppCompatActivity { 

    private View btnRender; 
    private LinearLayout container; 
    private View btnRendered; 


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

     btnRender = (View)findViewById(R.id.btn_render); 
     container = (LinearLayout)findViewById(R.id.fragment_layout); 
     btnRendered = (View) findViewById(R.id.btn_rendered); 

     //set event handling for button 
     btnRender.setOnClickListener(onClickListener()); 
    } 

    private View.OnClickListener onClickListener() { 


     return new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //replace fragment when clicked 
       FragmentManager fm = getSupportFragmentManager(); 
       FragmentTransaction ft = fm.beginTransaction(); 
       ft.replace(R.id.fragment_layout, new PDFRenderFragment()); 
       ft.commit(); 

       //gone button after all 
       btnRender.setVisibility(View.GONE); 
       container.setVisibility(View.VISIBLE); 
      } 
     }; 


     } 
} 

btn_renderedは私がのためにクリック上のリスナーを設定したい他のボタンですが、ソフトウェアは私がこれを行うことはできません。それが機能するためにスイッチケースの方法を設定する必要があるのは本当ですか?

私はちょうど両方のコードを試してみましたが、どれも希望の効果がなかったようです。今すぐボタンの1つをクリックすると、2番目のpdfが常に表示されます。 (私がボタンを使っていたもの)

+0

そのボタンのコードも追加します。コンパイルエラーを表示します。 – greenapps

+0

これは奇妙に聞こえます。もう1つのリスナーを他のボタンに追加しようとしたコードを投稿できますか? – user6547359

+0

'btnRender.setVisibility(View.GONE);'。他のボタンが押されたときにそのボタンを非表示にしたいのですか? – greenapps

答えて

1

以下のように扱うことができます。

btnRender.setOnClickListener(onClickListener()); 
btnRendered.setOnClickListener(onClickListener()); 

private View.OnClickListener onClickListener() { 


     return new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       switch(v.getId()){ 
       case R.id.btn_render: 
       //replace fragment when clicked 
       FragmentManager fm = getSupportFragmentManager(); 
       FragmentTransaction ft = fm.beginTransaction(); 
       ft.replace(R.id.fragment_layout, new PDFRenderFragment()); 
       ft.commit(); 

       //gone button after all 
       btnRender.setVisibility(View.GONE); 
       container.setVisibility(View.VISIBLE); 
       break; 
       case R.id.btn_rendered: 
       // your logic here 

       break; 
      } 
      } 
     }; 
    } 
0

2番目のボタンに対しても同じ方法を使用できます。if/else条件を使用して、そのメソッドでどのボタンがクリックされたかを識別します。 のようなコードです。

//set event handling for button 
btnRender.setOnClickListener(onClickListener()); 
second_btn.setOnClickListener(onClickListener()); 

あなたonClickListener方法。

private View.OnClickListener onClickListener() { 


     return new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //replace fragment when clicked 
       if (v == btnRender) { 
        FragmentManager fm = getSupportFragmentManager(); 
        FragmentTransaction ft = fm.beginTransaction(); 
        ft.replace(R.id.fragment_layout, new PDFRenderFragment()); 
        ft.commit(); 

        //gone button after all 
        btnRender.setVisibility(View.GONE); 
        container.setVisibility(View.VISIBLE); 
       } else if (v == second_btn) { 
        //second button click code 
       } 
      } 
     }; 
    } 
+0

ありがとうございました! – Desthstro

関連する問題