Hallo ich versuche, eine einfache SQLite-Datenbank in einem Fragment zu erstellen, in dem eine Person Memos speichern kann. Es gibt keinen Fehler offensichtliche Fehler in der App, aber sobald ein Benutzer versucht, etwas hinzuzufügen und auf die Schaltfläche Hinzufügen klickt, erhalte ich den folgenden Fehler. Wenn jemand weiß, wo ich falsch werde wäre es vielAndroid App SQLite addButtonClicked IllegalStateException
03-29 11 geschätzt werden: 45: 08.781 6065-6065/com.test.test.app E/Android Runtime: FATAL AUSNAHME: Hauptprozess: com. test.test.app, PID: 6065
java.lang.IllegalStateException: Könnte finden Methode nicht addButtonClicked (view) in einem Elternteil oder einem Vorfahren Kontext für android: onClick auf Ansichtsklasse definiert Attribut android.support.v7 .widget.AppCompatButton mit der ID 'addButton'
Memo Fragment.java
package com.teat.test.app;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
/**
* A simple {@link Fragment} subclass.
*/
public class MemoFragment extends Fragment {
EditText Input;
TextView LyricText;
MyDBHandler dbHandler;
Button addButtonClicked;
Button deleteButtonClicked;
public MemoFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_memo, container, false);
Input = (EditText) v.findViewById(R.id.Input);
LyricText = (TextView) v.findViewById (R.id.LyricText);
dbHandler = new MyDBHandler(getActivity() ,null, null, 1);
printDatabase();
return v;
}
//add lyric to database
public void addButtonClicked(View view){
Lyrics lyrics = new Lyrics(Input.getText().toString());
dbHandler.addLyric(lyrics);
printDatabase();
}
//delete items
public void deleteButtonClicked(View view){
String inputtext = Input.getText().toString();
dbHandler.deleteLyrics(inputtext);
printDatabase();
}
public void printDatabase(){
String dbString = dbHandler.databaseToString();
LyricText.setText(dbString);
Input.setText("");
}
}
fragment_memo.xml
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/Input"
android:layout_marginTop="71dp"
android:width="300dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Add"
android:id="@+id/addButton"
android:layout_below="@+id/Input"
android:layout_alignLeft="@+id/Input"
android:layout_alignStart="@+id/Input"
android:layout_marginTop="44dp"
android:onClick="addButtonClicked" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"
android:id="@+id/deleteButton"
android:layout_alignBottom="@+id/addButton"
android:layout_alignRight="@+id/Input"
android:layout_alignEnd="@+id/Input"
android:longClickable="false"
android:onClick="deleteButtonClicked" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Large Text"
android:id="@+id/LyricText"
android:layout_below="@+id/deleteButton"
android:layout_toRightOf="@+id/addButton"
android:layout_toEndOf="@+id/addButton"
android:layout_marginTop="102dp" />
Schaltfläche Klick-Methode über XML hinzugefügt funktioniert nicht im Falle von Fragmenten. Add onClick-Code in Ihrer Java-Datei stattdessen –