2014-11-04 131 views
0

我試圖調用輸入對話框,在這有一個按鈕(爲簡單起見)片段和對話框中有一個EditText字段中輸入這樣的文字:輸入對話框

public class CreateDayFragment extends Fragment { 

public CreateDayFragment(){ 
} 
private Button button;![enter image description here][1] 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.createday_main, container, false); 
    button = (Button) getView().findViewById(R.id.createDayButton); 
    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      showInputDialog(); 
     } 
    }); 
    return rootView; 
} 
protected void showInputDialog() { 
    LayoutInflater layoutInflater = LayoutInflater.from(CreateDayFragment.this.getActivity()); 
    View promptView = layoutInflater.inflate(R.layout.createday_dialog, null); 
    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
      CreateDayFragment.this.getActivity()); 
    alertDialogBuilder.setView(promptView); 
    final EditText editText = (EditText) promptView 
      .findViewById(R.id.lectureDetailsEditText); 
    alertDialogBuilder 
      .setCancelable(false) 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        Toast.makeText(getActivity().getApplicationContext(),"OK CLICKED",1000).show(); 
       } 
      }) 
      .setNegativeButton("Cancel", 
        new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int id) { 
          dialog.cancel(); 
         } 
        }); 

    AlertDialog alert = alertDialogBuilder.create(); 
    alert.show(); 
} 
} 

但這不起作用。請幫忙,因爲我無法找出問題。

8月11日至4日:43:54.800:E/AndroidRuntime(10568):致命異常:主 8月11日至4日:43:54.800:E/AndroidRuntime(10568):進程:com.example.loginphase ,PID:10568 11-04 08:43:54.800:E/AndroidRuntime(10568):java.lang.NullPointerException 11-04 08:43:54.800:E/AndroidRuntime(10568):at com.example.loginphase。 CreateDayFragment.onCreateView(CreateDayFragment.java:26) 11-04 08:43:54.800:E/AndroidRuntime(10568):at android.app.Fragment.performCreateView(Fragment.java:1700) 11-04 08:43: 54.800:E/AndroidRuntime(10568):在android.app.FragmentManagerImpl.moveToState(FragmentManager.java:890) 11-04 08:43:54.800:E/AndroidRuntime(10568) :at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1062) 11-04 08:43:54.800:E/AndroidRuntime(10568):at android.app.BackStackRecord.run(BackStackRecord.java:684) 11 -04 08:43:54.800:E/AndroidRuntime(10568):at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1447) 11-04 08:43:54.800:E/AndroidRuntime(10568):at android。 app.FragmentManagerImpl $ 1.run(FragmentManager.java:443) 11-04 08:43:54.800:E/AndroidRuntime(10568):at android.os.Handler.handleCallback(Handler.java:733) 11-04 08 :43:54.800:E/AndroidRuntime(10568):at android.os.Handler.dispatchMessage(Handler.java:95) 11-04 08:43:54.800:E/AndroidRuntime(10568):at android.os.Looper .loop(Looper.java:136) 11-04 08:43:54.800:E/AndroidRuntime(10568):at android.app.Activity Thread.main(ActivityThread.java:5021) 11-04 08:43:54.800:E/AndroidRuntime(10568):at java.lang.reflect.Method.invokeNative(Native Method) 11-04 08:43:54.800 :E/AndroidRuntime(10568):在java.lang.reflect.Method.invoke(Method.java:515) 11-04 08:43:54.800:E/AndroidRuntime(10568):at com.android.internal.os (ZygoteInit.java:827) 11-04 08:43:54.800:E/AndroidRuntime(10568) 8月11日至4日:43:54.800:E/AndroidRuntime(10568):在dalvik.system.NativeStart.main(本機方法)

+0

不工作means..what?你有沒有得到任何錯誤..以明確的方式解釋..這將有助於在這裏正確回答你的問題。 – 2014-11-04 03:26:04

+0

@RajaReddyPolamReddy在運行時崩潰。 – Smu 2014-11-04 03:29:41

+0

當它崩潰....顯示我的日誌 – 2014-11-04 03:32:13

回答

0

更改代碼

button = (Button) getView().findViewById(R.id.createDayButton); 

這樣

button = (Button) rootView.findViewById(R.id.createDayButton); 
0

您可以使用此對話框,而不是AlertDialog這個:

 final Dialog dialog = new Dialog(getActivity()); 
     dialog.setContentView(R.layout.dialog); 
     dialog.setCancelable(true); 

     final EditText edittext = (EditText) dialog 
       .findViewById(R.id.edittext); 
     Button button = (Button) dialog 
       .findViewById(R.id.button); 

     button.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 

       dialog.dismiss(); 
      } 
     }); 

     dialog.show(); 
+0

我想打開對話框,點擊按鈕 – Smu 2014-11-04 03:37:47

+0

是的,那是一個「對話框」,你可以在你的showInputDialog()中使用它。 – avinea28 2014-11-04 03:44:24