按下按钮时奇怪的应用程序崩溃

时间:2017-05-12 20:06:57

标签: android onclicklistener

您好我学习如何开发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并实现该方法时,应用程序崩溃了。从日志中我无法理解发生了什么。有人可以帮帮我吗?

2 个答案:

答案 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);
}

希望这会有所帮助〜