2016-07-12 5 views
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 это другая кнопка, которую я хочу установить на мыши прослушиватель, но программное обеспечение не позволит мне сделать это. Верно ли, что мне нужно настроить метод коммутатора для его работы?

Я просто опробовал оба кода, и ни один из них, похоже, не достиг нужного эффекта. Теперь, когда я нажимаю одну из кнопок, всегда отображается второй PDF-файл! (что я использовал кнопку для)

+0

Добавить код для этой кнопки. И покажите ошибку компиляции. – greenapps

+0

Это звучит странно. Можете ли вы отправить код, который вы пытались добавить второго слушателя на другую кнопку? – 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

Вы также можете использовать тот же метод для второй кнопки и использовать условие 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

Смежные вопросы