Les boutons de mise en page gonflés sur l'avertisseur Cliquer ne fonctionnent pas

Toutes mes autres méthodes onClick fonctionnent sauf celles dans lesquelles je dois gonfler la disposition pour obtenir le bouton! Qu'est-ce que je fais mal! Voici un code:

package com.games.think; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.RadioButton; import android.widget.TableLayout; public class Think extends Activity{ //What question are we on? int question = 1; //What level are we on? String lvl ="1"; //Radio buttons we need to access them global RadioButton lvl1; RadioButton lvl2; RadioButton lvl3; RadioButton lvl4; RadioButton lvl5; /** Called when the activity is first created. */ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); //play Button play = (Button)findViewById(R.id.play); play.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { playOnClick(v); } }); //level Button level = (Button)findViewById(R.id.level); level.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { levelOnClick(v); } }); //setLevel LayoutInflater inflater = LayoutInflater.from(this); TableLayout tbl = new TableLayout(this); View playv = inflater.inflate(R.layout.level, null); Button updateLevel = (Button) playv.findViewById(R.id.updateLevel); tbl.addView(updateLevel); updateLevel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { updateLevelOnClick(v); } }); View levelv = inflater.inflate(R.layout.play, null); Button gotomenu = (Button) levelv.findViewById(R.id.tomenu); gotomenu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toMenuOnClick(v); } }); //Radio Buttons lvl1 = (RadioButton) levelv.findViewById(R.id.lvl1); lvl2 = (RadioButton) levelv.findViewById(R.id.lvl2); lvl3 = (RadioButton) levelv.findViewById(R.id.lvl3); lvl4 = (RadioButton) levelv.findViewById(R.id.lvl4); lvl5 = (RadioButton) levelv.findViewById(R.id.lvl5); //tomenu lvl = getLevel(); if(lvl.equals("-1")) { lvl=getLevel(); } } protected void toMenuOnClick(View v) { setContentView(R.layout.main); } protected void updateLevelOnClick(View v) { setContentView(R.layout.main); } protected void levelOnClick(View v) { setContentView(R.layout.level); if(lvl.equals("1")) { lvl1.setChecked(true); } if(lvl.equals("2")) { lvl2.setChecked(true); } if(lvl.equals("3")) { lvl3.setChecked(true); } if(lvl.equals("4")) { lvl4.setChecked(true); } if(lvl.equals("5")) { lvl5.setChecked(true); } } protected void playOnClick(View v) { setContentView(R.layout.play); setQuestion(); } private String getLevel() { String FILENAME = "think_level"; FileInputStream fis; byte[] buffer = new byte[1000]; try { fis = openFileInput(FILENAME); } catch (FileNotFoundException e) { setLevel("1"); return "-1"; } try { fis.read(buffer,0,1000); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { fis.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String level = buffer.toString(); return level; } private void setLevel(String _level) { String FILENAME = "think_level"; String level = _level; FileOutputStream fos; try { fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); fos.write(level.getBytes()); fos.close(); } catch (Exception e) { e.printStackTrace(); } } private void setQuestion() { } } 

Voici mes fichiers xml: Main.xml:

  • Effectuez une application Android payante gratuite pendant une semaine?
  • Ajout d'un fragment sur un autre fragment sur le problèmeClickListener
  • LinearyLayout ne redimensionnera pas une fois sa hauteur est de 0
  • Comment désactiver le défilement RecyclerView?
  • Android 'n'est pas reconnu comme une commande interne ou externe
  • Android WebView Javascript getSelection
  •  <?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <ImageView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/imageView1" android:src="@drawable/think" android:scaleType="fitCenter"></ImageView> <Button android:id="@+id/play" android:text="Play" android:layout_height="wrap_content" android:layout_width="wrap_content" ></Button> <Button android:text="Level" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/level"></Button> </TableLayout> 

    Voici mon level.xml

     <?xml version="1.0" encoding="utf-8"?> <TableLayout android:id="@+id/tableLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:text="Level:" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView> </TableRow> <TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton android:id="@+id/lvl1" android:text="Level 1" android:layout_height="wrap_content" android:checked="true" android:layout_width="wrap_content"></RadioButton> <RadioButton android:id="@+id/lvl2" android:text="Level 2" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton> <RadioButton android:id="@+id/lvl3" android:text="Level 3" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton> <RadioButton android:id="@+id/lvl4" android:text="Level 4" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton> <RadioButton android:id="@+id/lvl5" android:text="Level 5" android:layout_height="wrap_content" android:layout_width="wrap_content"></RadioButton> </RadioGroup> </TableRow> <Button android:text="Set Level" android:id="@+id/updateLevel" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button> </TableLayout> 

    Voici play.xml:

     <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ScrollView android:id="@+id/scrollView1" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextView android:text="TextView" android:id="@+id/question" android:layout_height="wrap_content" android:layout_width="wrap_content"></TextView> </ScrollView> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radioButton1" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="RadioButton"></RadioButton> <RadioButton android:id="@+id/radioButton2" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="RadioButton"></RadioButton> <RadioButton android:id="@+id/radioButton3" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="RadioButton"></RadioButton> </RadioGroup> <Button android:id="@+id/go" android:text="Go" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button> <Button android:id="@+id/tomenu" android:text="Back To Menu" android:layout_height="wrap_content" android:layout_width="wrap_content"></Button> </TableLayout> 

    6 Solutions collect form web for “Les boutons de mise en page gonflés sur l'avertisseur Cliquer ne fonctionnent pas”

    Le problème est que la vue que vous ajoutez n'a pas de parent et qu'il est donc impossible de recevoir des événements de clic. À l'heure actuelle, vous gonflez la vue en utilisant

     View playv = inflater.inflate(R.layout.level, null); 

    Vous voudrez placer une vue parentale dans ce deuxième argument.

     View playv = inflater.inflate(R.layout.level, parentView, false); 

    Cela vous permettra d'utiliser une vue parentale mais ne l'attache pas.

    Ainsi, les boutons sont dans votre niveau et jouez aux mises en page, et vous gonflez ces mises en page, mais il ne semble pas que vous ajoutez les mises en page à la vue principale / la mise en page. Êtes-vous en mesure de voir ces deux mises en page que vous gonflez?

    Il n'y a aucune raison apparente pour laquelle cela ne devrait pas fonctionner.

    Toutes les vues créées pour l'exécution doivent être ajoutées à votre version linéaire (ou à toute autre mise en page parent) en utilisant:

     linearLayoutMain.addView(updateLevel); 

    Avez-vous utilisé ces boutons dans n'importe quelle disposition linéaire dans votre fichier xml, c'est-à-dire que ces boutons apparaissent lorsque vous atteignez l'activité correspondante?

    Vous devriez voir l'exception à tbl.addView(updateLevel); , Car vous essayez d'ajouter une vue dont le parent est déjà spécifié.

    Ne voyez-vous pas cette exception?

    L'inflation est une méthode asynchrone, pouvez-vous essayer d'ajouter l'écouteur de clic après sa gonflement

      //only inflate in oncreate / onresume inflater.inflate( R.layout.play, // resource this, // root true); //attach to root //overide onFinishInflate and get the view here protected void onFinishInflate() { super.onFinishInflate(); Button gotomenu = (Button) levelv.findViewById(R.id.tomenu); gotomenu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toMenuOnClick(v); } }); } 

    Si vous souhaitez que la valeur de l'élément sur l'élément, cliquez sur simplement utiliser .setTag (une certaine valeur); Et getTag ();

     RelativeLayout firstContactRlayout = (RelativeLayout) myLayout.findViewById(R.id.firstContactRlayout); firstContactRlayout.setTag(number); firstContactRlayout.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String gettags = (String) v.getTag(); Log.e("gettags", "--" + gettags); } }); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.