2017-10-09 5 views
0

Je suis nouveau dans le développement Android et créé une petite application avec laquelle je suis coincé.Activité Bouton ne pas écouter

J'ai créé une activité avec layout activity_main et est gonflé avec MainActivity.java.

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    startFragment = new StartFragment(); 
    getFragmentManager().beginTransaction().replace(R.id.dynamic_view, startFragment).commit(); 
    setupOnClickListeners(); 
} 

private void setupOnClickListeners() { 
    settingsButton = (Button) findViewById(R.id.settings); 
    startButton = (Button) findViewById(R.id.keypad); 


    settingsButton.setOnClickListener(this); 
    startButton.setOnClickListener(this); 
} 

@Override 
public void onClick(View clickView) { 
    switch (clickView.getId()) { 
     case R.id.keypad: // select audio button 
      Log.d(LOG_TAG, "Clicked Start"); 
      if (startFragment == null) { 
       startFragment = new StartFragment(); 
      } 
      getFragmentManager().beginTransaction().replace(R.id.dynamic_view, startFragment).addToBackStack(null).commit(); 
      break; 

     case R.id.settings: 
      Log.d(LOG_TAG, "Settings dialpad"); 
      if (settingsFragment == null) { 
       settingsFragment = new SettingsFragment(); 
      } 
      getFragmentManager().beginTransaction().replace(R.id.dynamic_view, settingsFragment).addToBackStack(null).commit(); 
      break; 
    } 
} 

Une fois que je l'ai gonflé le Fragment Réglages je ne suis pas en mesure de regonfler le fragment de départ, dans les journaux de débogage je trouve que le clic est à travers, mais ne pas atterrir sur l'auditeur.

10-10 02:52:24.418 30630-30630/com.avaya.ihg  
D/[email protected][MainActivity]: ViewPostImeInputStage processPointer 1 
10-10 02:52:24.496 30630-30630/com.avaya.ihg 
D/[email protected][MainActivity]: ViewPostImeInputStage processPointer 0 

Des points qui pourraient m'aider? Merci d'avance.

+0

Le journal que vous avez publié ne ressemble pas au journal de l'erreur. S'il vous plaît poster votre logcat entier ou toute erreur qui est montre. Ce que vous avez posté est un journal de débogage. – jonathanrz

+0

Pourquoi ne publiez-vous pas les fragments dans la pile arrière? –

Répondre

0

Bien regarder votre code me semble un peu confus (je ne sais pas si vous l'avez paraphrasé?), En particulier la façon dont vous définissez les auditeurs.

De la documentation du bouton vous devez établirons auditeurs similaires à cela:

button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     // Code here executes on main thread after user presses button 
    } 

De votre code il semble que vous définissez les auditeurs à votre MainActivity qui devrait vous donner une erreur.

Si tel est le cas, en utilisant votre fonction onClick() vous voulez mettre quelque chose d'auditeur comme ceci:

startButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     MainActivity.this.onClick(v); 
    } 
}); 
0

Pourquoi ne pas utiliser butterknife bibliothèque? vous pouvez définir différents événements onClick vues ... par exemple:

@OnClick({ R.id.door1, R.id.door2, R.id.door3 }) 
public void pickDoor(View view) { 
    if (view.getId() == R.id.door1) { 
    Toast.makeText(this, "door1", LENGTH_SHORT).show(); 
    } else { 
    if(view.getId() == R.id.door2){ 
    Toast.makeText(this, "Try again", LENGTH_SHORT).show(); 
    } 
    ..... 
    } 
} 
0

Je ne sais pas ce qui est arrivé, mais cela a fonctionné après la fermeture du studio et faire un nettoyage complet et exécutez à nouveau sur l'appareil.