2017-05-12 110 views
-3

您好,我正在學習如何開發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和實現應用程序崩潰的方法。從日誌中我無法理解發生了什麼。請有人幫助我嗎?

回答

3

onClick屬性的XML 作品與Activity,所以你onSaveMethod將需要在您的Activity聲明,即使你是充氣它作爲一個片段的一部分。

如果您使用的是碎片,您必須使用setOnClickListener

+0

是的,你是對的。看到你的評論我記得曾經在某處讀過,但現在我想不起來。萬分感謝.....! – Akis

0

1.從按鈕editSaveButton中刪除屬性android:onClick="onSaveMethod"

2.onClick加入收藏夾從加入Fragment

3.從方法onSaveMethod()刪除參數View和呼叫從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); 
} 

希望這將有助於〜

相關問題