2014-11-04 111 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