您好我学习如何开发Android应用程序。我在第二个活动中有一个片段,我想在按下按钮返回主活动时。我的代码如下:
public class NoteEditFragment extends Fragment {
private String title,summary;
private EditText editTextTitle, editTextSummary;
//private Button saveEditButton;
public NoteEditFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View fragmentEdit = inflater.inflate(R.layout.fragment_note_edit, container, false);
editTextTitle = (EditText)fragmentEdit.findViewById(R.id.editNoteTitle);
editTextSummary= (EditText) fragmentEdit.findViewById(R.id.editNoteSummary);
// saveEditButton = (Button) fragmentEdit.findViewById(R.id.editSaveButton);
Intent intent = getActivity().getIntent();
title = intent.getStringExtra(MainActivity.NOTETITLE);
summary=intent.getStringExtra(MainActivity.NOTESUMMARY);
editTextTitle.setText(title);
editTextSummary.setText(summary);
/* saveEditButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
Intent intent1 = new Intent(getActivity(), MainActivity.class);
startActivity(intent1);
}
});
*/
return fragmentEdit;
}
public void onSaveMethod(View view){
Intent intent1 = new Intent(getActivity(),MainActivity.class);
startActivity(intent1);
}
}
当我自己定义onclick监听器时,它所运行的注释块内的代码,但是当我将onClick属性附加到XML并实现该方法时,应用程序崩溃了。从日志中我无法理解发生了什么。有人可以帮帮我吗?
答案 0 :(得分:3)
XML 中的onClick
属性适用于Activity
,因此您的onSaveMethod
需要在Activity
中声明,甚至虽然你把它作为碎片的一部分膨胀。
如果您使用的是片段,则必须使用setOnClickListener
。
答案 1 :(得分:0)
1。从按钮android:onClick="onSaveMethod"
移除属性editSaveButton
。
2。将onClick
听众添加到programmatically
的按钮Fragment
。
3。从方法View
中删除参数onSaveMethod()
,然后从onClick()
调用此方法。
试试这个:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
............
...............
saveEditButton = (Button) fragmentEdit.findViewById(R.id.editSaveButton);
saveEditButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
onSaveMethod();
}
});
return fragmentEdit;
}
public void onSaveMethod() {
Intent intent1 = new Intent(getActivity(), MainActivity.class);
startActivity(intent1);
}
希望这会有所帮助〜