我正在尝试使用Fragments作为基础创建和应用程序,并且在其中一个片段中,我想要一个基本的SQLite,用户可以在其中添加备忘录。 我目前仍然坚持将侦听器包含在Java中而不是XML中。我目前收到以下错误。
C:\Users\Luke\AndroidStudioProjects\ShardswithFragments\app\src\main\java\com\test\test\app\MemoFragment.java
Error:(43, 40) error: <identifier> expected
Error:(43, 41) error: illegal start of type
Error:(43, 44) error: ')' expected
Error:(43, 49) error: ';' expected
Error:(43, 50) error: invalid method declaration; return type required
Error:(44, 9) error: illegal start of expression
Error:(44, 16) error: illegal start of expression
Error:(44, 28) error: ';' expected
Error:(44, 35) error: ';' expected
Error:(51, 43) error: <identifier> expected
Error:(51, 44) error: illegal start of type
Error:(51, 47) error: ')' expected
Error:(51, 52) error: ';' expected
Error:(51, 53) error: invalid method declaration; return type required
Error:(52, 9) error: illegal start of expression
Error:(52, 16) error: illegal start of expression
Error:(52, 28) error: ';' expected
Error:(52, 35) error: ';' expected
Error:Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.
似乎更多的语法错误和无法解析符号(setOnClickListener)是特定的。任何帮助将不胜感激
package com.test.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;
import android.view.View.OnClickListener;
/**
* 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);
addButtonClicked = (Button) v.findViewById(R.id.addButton);
deleteButtonClicked = (Button) v.findViewById(R.id.deleteButton);
dbHandler = new MyDBHandler(getActivity() ,null, null, 1);
printDatabase();
return v;
}
//add to db
addButtonClicked.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Lyrics lyrics = new Lyrics(Input.getText().toString());
dbHandler.addLyric(lyrics);
printDatabase();
}};
//delete from db
deleteButtonClicked.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
String inputtext = Input.getText().toString();
dbHandler.deleteLyrics(inputtext);
printDatabase();
}};
// printout entry
public void printDatabase(){
String dbString = dbHandler.databaseToString();
LyricText.setText(dbString);
Input.setText("");
}
}
答案 0 :(得分:2)
您无法在方法范围外设置侦听器,正确的代码位于
之下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);
addButtonClicked = (Button) v.findViewById(R.id.addButton);
deleteButtonClicked = (Button) v.findViewById(R.id.deleteButton);
dbHandler = new MyDBHandler(getActivity() ,null, null, 1);
printDatabase();
//add to db
addButtonClicked.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Lyrics lyrics = new Lyrics(Input.getText().toString());
dbHandler.addLyric(lyrics);
printDatabase();
}
});
//delete from db
deleteButtonClicked.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
String inputtext = Input.getText().toString();
dbHandler.deleteLyrics(inputtext);
printDatabase();
}
});
return v;
}
// printout entry
public void printDatabase(){
String dbString = dbHandler.databaseToString();
LyricText.setText(dbString);
Input.setText("");
}
}