2015-10-23 4 views
0

J'ai un bouton dans un de mes fragments. Mais il semble être "non-cliquable". Il n'y a pas de Log.d. Message lorsque je clique sur le bouton (Dans un autre fragment (même onclicklistenercode) tout va bien. Pour plus aperçu, j'ai ajouté l'ensemble de la classe et la partie de mon dossier de mise en page qui defindes le bouton.Le bouton ne répond pas

public class ListViewFragment extends Fragment { 
 

 
    DbHelper mydb; 
 

 
    Button buttondeletedb; 
 
    Button buttonexport; 
 

 
    private EditText roomnr; 
 

 
    @Override 
 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
 
     View view = inflater.inflate(R.layout.fragment_listview, container, false); 
 

 
     Context context = getContext(); 
 
     mydb = new DbHelper(context); 
 

 
     buttondeletedb = (Button) view.findViewById(R.id.button_deletelist_list); 
 
     buttonexport = (Button) view.findViewById(R.id.button_export); 
 

 
     String dataList = mydb.getAllElements();             
 
     String [] dataListArray = dataList.split("\n");            
 

 
     List<String> dataListFinal = new ArrayList<>(Arrays.asList(dataListArray)); 
 

 
     ArrayAdapter<String> dataListAdapter = new ArrayAdapter<>(         
 
       getActivity(),                  
 
       R.layout.list_item_datalist,               
 
       R.id.list_item_datalist_textview,             
 
       dataListFinal);                  
 

 
     View rootView=inflater.inflate(R.layout.fragment_listview, container, false); 
 

 
     ListView dataListListView = (ListView) rootView.findViewById(R.id.datalist); 
 
     dataListListView.setAdapter(dataListAdapter); 
 

 

 
     buttondeletedb.setOnClickListener(new View.OnClickListener() { 
 
      @Override 
 
      public void onClick(View view) { 
 
       Log.d("buttondeletelist", "clicked!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); 
 
       mydb.deleteAll(); 
 
      } 
 
     }); 
 

 
     return rootView; 
 
    } 
 

 

 
}

  <Button 
 
       android:layout_width="wrap_content" 
 
       android:layout_height="wrap_content" 
 
       android:text="@string/deletelist" 
 
       android:id="@+id/button_deletelist_list" 
 
       android:layout_gravity="center_horizontal" />

+1

est le bouton initialisés –

+0

code partage où vous remplissez le listview ou lorsque vous initialisez bouton – kakajan

+0

buttondeletedb = (Bouton) view.findViewById (R.id.button_id); vous l'avez fait? –

Répondre

1

// Supprimer rootView et retour vue au lieu de rootView

public class ListViewFragment extends Fragment { 

       DbHelper mydb; 

       Button buttondeletedb; 
       Button buttonexport; 

       private EditText roomnr; 

       @Override 
       public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
        View view = inflater.inflate(R.layout.fragment_listview, container, false); 

        Context context = getContext(); 
        mydb = new DbHelper(context); 

        buttondeletedb = (Button) view.findViewById(R.id.button_deletelist_list); 
        buttonexport = (Button) view.findViewById(R.id.button_export); 

        String dataList = mydb.getAllElements();             
        String [] dataListArray = dataList.split("\n");            

        List<String> dataListFinal = new ArrayList<>(Arrays.asList(dataListArray)); 

        ArrayAdapter<String> dataListAdapter = new ArrayAdapter<>(         
          getActivity(),                  
          R.layout.list_item_datalist,               
          R.id.list_item_datalist_textview,             
          dataListFinal);                  
      // Change made here. replace view instead of rootView and remove rootView 
        ListView dataListListView = (ListView) view.findViewById(R.id.datalist); 
        dataListListView.setAdapter(dataListAdapter); 


        buttondeletedb.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          Log.d("buttondeletelist", "clicked!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); 
          mydb.deleteAll(); 
         } 
        }); 
      // Replace rootView with view. 
        return view; 
       } 


      } 
+0

changez votre code en fonction de cela. –

+1

Seul le code en tant que réponse est déconseillé. –

+0

C'est mieux de mentionner où vous avez fait les changements. – Rami

0

Lien entre fichier XML et le fichier de classe de l'élément (Button) est there.Add pas cette ligne votre onCreateView()

Button buttondeletedb = (Button) view.findViewById(R.id.buttonid); 
2

Vous ne pouvez cliquer sur le bouton, car la vue racine du fragment n'est pas vue, vous êtes retourné rootView. Le bouton est vue enfant de la vue.

Remplacez return rootView; par return view;.

Il devrait fonctionner