2014-01-06 5 views
0

Привет У меня есть проект, в котором один Activity и несколько layout. В макетах содержатся различные элементы, такие как кнопки. Я не могу добавить кнопки для этих слушателей с основного Activity. method onClick() используется в деятельности (активность реализует View.OnClickListener)Слушатель для кнопки внешнего макета

public class MainActivity extends Activity implements View.OnTouchListener { 
//.... 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     FrameLayout mainLayout = (FrameLayout) findViewById(R.id.container); 
     mainLayout.setOnTouchListener(this); 
     LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     View one = (View) LayoutInflater.from(this).inflate(R.layout.one, null); 

     flipper = (ViewFlipper) findViewById(R.id.viewFlip); 

     int layouts[] = new int[]{R.layout.one, R.layout.two, R.layout.three}; 
     for (int layout : layouts) { 
      flipper.addView(inflater.inflate(layout, null)); 
     } 


     conBut = (Button) one.findViewById(R.id.conBut2); 
     conBut.setOnClickListener(new listen()); 
    } 


    private class listen implements View.OnClickListener { 
     @Override 
     public void onClick(View view) { 
      // .... 
     } 
    } 

    //.... 
} 

Результат представляет собой кнопку, без действия. Пожалуйста, помогите мне.

UPD1:

public boolean onTouch(View view, MotionEvent event) { 
    switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      fromPosition = event.getX(); 
      break; 
     case MotionEvent.ACTION_MOVE: 
      float toPosition = event.getX(); 
      if ((fromPosition - MOVE_LENGTH) > toPosition) { 
       fromPosition = toPosition; 
       flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.go_next_in)); 
       flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.go_next_out)); 
       flipper.showNext(); 
      } else if ((fromPosition + MOVE_LENGTH) < toPosition) { 
       fromPosition = toPosition; 
       flipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.go_prev_in)); 
       flipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.go_prev_out)); 
       flipper.showPrevious(); 
      } 
     default: 
      break; 
    } 
    return true; 
} 

UPD2

public class MainActivity extends Activity implements View.OnTouchListener { 
private class listen implements View.OnClickListener { 
    @Override 
    public void onClick(View view) { 
     makeMsg("Hello from onClick!", Toast.LENGTH_LONG); 
     switch (view.getId()) { 
      case R.id.conBut2: { 
       makeMsg("Hello by Button2!", Toast.LENGTH_LONG); 
       case R.id.regRad: { 
        makeMsg("Hello by RadioButton!", Toast.LENGTH_LONG); 
       } 
      } 
      ; 
      break; 


     } 
    } 
} 

    private void makeMsg(String txt, int dur) { 
     Toast.makeText(this, txt, dur).show(); 
    } 
} 
+0

Я не понимаю вопроса. Можете ли вы быть более ясными? – Emmanuel

+0

(Активность реализует View.OnClickListener) ??? Открытый класс MainActivity extends Activity реализует View.OnTouchListener ??? – AndRSoid

+0

Нет, активность реализует OnTouchListener для ViewFlipper. Listen class реализует OnClickListener, который обрабатывается и кликает событие – 0xDEADBEEF

ответ

0

Я думаю, что проблема возникает потому, что OnTouchListener поймать все события прикосновения и нажмите.

В OnTouch

изменение

return true; 

в

return false; 

Итак, событие это не потребляется и передается другим слушателям

+0

Нет, вы ошибаетесь. – 0xDEADBEEF

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