我有一個FragmentActivity
使用SherlockActionBar
和支持庫v4。上面的`onContextItemSelected`上的崩潰
主佈局中有一個ListFragment
。點擊列表項目打開一個新的ListFragment
,部分滑入視圖。如果您長按「THOSE」列表項目,上下文菜單將顯示兩個選項。第一個選項顯示dialog
與EditText
框和Button
「它試圖打開時崩潰。
如果我刪除EditText
行和Button
行(除非您聲明它們的地址爲findViewById
),則會彈出一個空的dialog
。但由於某種原因,它不喜歡對話框的內容(按鈕/框)。任何人都可以看看LogCat,看看爲什麼?該線是null
是setText
線。如果我將它註釋掉,按鈕的onClickListner
將變爲null
。
這是代碼和logcat。
public boolean onContextItemSelected(android.view.MenuItem item) {
if (item.getGroupId() == 2) {
switch (item.getItemId()) {
case 1:
case 1:
if (Rateit.isUserLoggedIn == true) {
final Dialog dialog = new Dialog(getActivity());
dialog.setTitle("Edit Review");
dialog.show();
final EditText etEdit = (EditText) dialog
.findViewById(R.id.etEditReview);
etEdit.setText(reviewWords);
Button bInsert = (Button) dialog.findViewById(R.id.bInsert);
bInsert.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
clickedReview = etEdit.getText().toString();
if (clickedReview.equals("")) {
Toast.makeText(getActivity(),
"Please add something first.",
Toast.LENGTH_SHORT).show();
} else {
newReview = etEdit.getText().toString();
new EditCommentTask().execute();
InputMethodManager imm = (InputMethodManager) getActivity()
.getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(
etEdit.getWindowToken(), 0);
dialog.dismiss();
}
}
});
}
return true;
的logcat:
03-06 10:29:08.527: E/AndroidRuntime(10438): FATAL EXCEPTION: main
03-06 10:29:08.527: E/AndroidRuntime(10438): java.lang.NullPointerException
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.---.---.RateReviewFragment.onContextItemSelected(RateReviewFragment.java:901)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.support.v4.app.FragmentManagerImpl.dispatchContextItemSelected(FragmentManager.java:1933)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:360)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.actionbarsherlock.app.SherlockFragmentActivity.onMenuItemSelected(SherlockFragmentActivity.java:211)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.policy.impl.PhoneWindow$DialogMenuCallback.onMenuItemSelected(PhoneWindow.java:3633)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.view.menu.MenuDialogHelper.onClick(MenuDialogHelper.java:167)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:941)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.widget.AdapterView.performItemClick(AdapterView.java:298)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.widget.AbsListView.performItemClick(AbsListView.java:1100)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.widget.AbsListView$PerformClick.run(AbsListView.java:2749)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.widget.AbsListView$1.run(AbsListView.java:3423)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.os.Handler.handleCallback(Handler.java:725)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.os.Handler.dispatchMessage(Handler.java:92)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.os.Looper.loop(Looper.java:137)
03-06 10:29:08.527: E/AndroidRuntime(10438): at android.app.ActivityThread.main(ActivityThread.java:5226)
03-06 10:29:08.527: E/AndroidRuntime(10438): at java.lang.reflect.Method.invokeNative(Native Method)
03-06 10:29:08.527: E/AndroidRuntime(10438): at java.lang.reflect.Method.invoke(Method.java:511)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
03-06 10:29:08.527: E/AndroidRuntime(10438): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
03-06 10:29:08.527: E/AndroidRuntime(10438): at dalvik.system.NativeStart.main(Native Method)
你正在創建一個**默認的**'Dialog'並在其中尋找一些視圖,你預期會發生什麼?您可能在對話框中缺少一個'setContentView'來設置包含您所尋找的小部件的佈局文件。 – Luksprog 2013-03-06 18:48:34
這是一個醜陋,醜陋的錯誤。我有一條被刪除的行,'dialog.setContentView(R.layout.editreview);'我把它放回去了,現在它可以工作。繼續,並做出正確的答案... – KickingLettuce 2013-03-06 18:54:25
是的,我已經upvoted一個評論和你的答案。但從技術上來說@盧克斯普羅克的答案更具體到發生了什麼,並等待他這樣做。如果沒有,我會接受你的。 – KickingLettuce 2013-03-06 20:05:57