Android 由于片段,Java 中的 Studio OnClickListener 而不是 XML
Android Studio OnClickListener in Java instead of XML due to fragment
我一直在尝试将一个简单的 SQLite 数据库实现到我正在创建的应用程序的片段中。我被告知,由于它是一个片段,我无法在我的 XML 中使用我的 onClicks,因为 Java 找不到它们,所以有一段时间我一直在寻找将我的按钮直接实现到 Java 相反,如果有必要,甚至可能是输入和结果文本,但我发现的所有信息都是特定于活动和我收到的所有其他信息 Cannot Resolve Symbol “OnClickListener”
如果有人有任何想法,将不胜感激
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;
/**
* 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("");
}
}
例如,在片段的 onCreateView() 中,您找到了一个按钮:
Button button = (Button) v.findViewById(R.id.button);
您可以像这样附加一个点击监听器:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Code here to handle the click
}
});
您可以为您的 Button
做一个简单的 onClickListener()
,请按照以下步骤操作:
addButtonClicked = (Button) v.findViewById(R.id.YOURID);
那么你可以这样做:
addButtonClicked.setOnClickListener(getActivity());
但是你必须实现 OnClickListener
所以它会生成这个方法:
@Override
public void onClick(View v) {
int id = v.getId();
switch(id){
....
}
}
点击 Button
后,您就可以为所欲为。
我一直在尝试将一个简单的 SQLite 数据库实现到我正在创建的应用程序的片段中。我被告知,由于它是一个片段,我无法在我的 XML 中使用我的 onClicks,因为 Java 找不到它们,所以有一段时间我一直在寻找将我的按钮直接实现到 Java 相反,如果有必要,甚至可能是输入和结果文本,但我发现的所有信息都是特定于活动和我收到的所有其他信息 Cannot Resolve Symbol “OnClickListener”
如果有人有任何想法,将不胜感激
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;
/**
* 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("");
}
}
例如,在片段的 onCreateView() 中,您找到了一个按钮:
Button button = (Button) v.findViewById(R.id.button);
您可以像这样附加一个点击监听器:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Code here to handle the click
}
});
您可以为您的 Button
做一个简单的 onClickListener()
,请按照以下步骤操作:
addButtonClicked = (Button) v.findViewById(R.id.YOURID);
那么你可以这样做:
addButtonClicked.setOnClickListener(getActivity());
但是你必须实现 OnClickListener
所以它会生成这个方法:
@Override
public void onClick(View v) {
int id = v.getId();
switch(id){
....
}
}
点击 Button
后,您就可以为所欲为。