Search code examples
androidandroid-button

Android Fragment onClick button Method


I'm trying to invoke the method in my onClick (View v) XML, but does not work with Fragment. This is the error.

01-17 12:38:36.840: E/AndroidRuntime(4171): java.lang.IllegalStateException: 
Could not find a method insertIntoDb(View) in the activity class main.MainActivity 
for onClick handler on view class android.widget.Button with id 'btn_conferma'

Java code:

public void insertIntoDb(View v) {
...
} 

XML:

<Button
        android:id="@id/btn_conferma"
        style="?android:attr/borderlessButtonStyle"
        android:layout_width="0.0dip"
        android:layout_height="45dp"
        android:layout_marginLeft="2dp"
        android:layout_weight="1.0"
        android:background="@drawable/bottoni"
        android:gravity="center_horizontal|center_vertical"
        android:onClick="insertIntoDb"
        android:text="SALVA"
        android:textColor="#ffffff"
        android:textSize="16sp" />

Solution

  • Your activity must have

    public void insertIntoDb(View v) {
    ...
    } 
    

    not Fragment .

    If you don't want the above in activity. initialize button in fragment and set listener to the same.

    <Button
        android:id="@+id/btn_conferma" // + missing
    

    Then

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
    
       View view = inflater.inflate(R.layout.fragment_rssitem_detail,
        container, false);
       Button button = (Button) view.findViewById(R.id.btn_conferma);
       button.setOnClickListener(new OnClickListener()
       {
                 @Override
                 public void onClick(View v)
                 {
                    // do something
                 } 
       }); 
       return view;
    }