2013-07-11 33 views
0

我从我的一个活动调用片段,并在片段本身中有登录按钮。它是给NPE,当我点击按钮。我尝试了所有的排列和组合,使其工作。这里是我的代码NPE单击片段和应用程序崩溃后的按钮

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setUserVisibleHint(true); 
    View rootView = inflater.inflate(R.layout.fragment1, container, false); 
    Button button = (Button) rootView.findViewById(R.id.bt_login); 
     button.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) { 
      // Perform action on click 
      EditText userName = (EditText)v.findViewById(R.id.userName); 
       String user_Name = userName.getText().toString(); 
       EditText password = (EditText)v.findViewById(R.id.password); 
       String user_Password = password.getText().toString(); 


       if(user_Name.length()== 0 || user_Password.length()== 0) 
       { 
        Toast.makeText(getActivity(), "Please enter correct information", Toast.LENGTH_LONG).show(); 
        //Toast.makeText(this,"Please enter correct information",Toast.LENGTH_LONG).show(); 
        return; 
       } 
      loginAction(user_Name,user_Password); 

     } 
    }); 
    return rootView; 
    } 

堆栈跟踪

07-11 11:50:02.536: E/AndroidRuntime(429): FATAL EXCEPTION: main 
07-11 11:50:02.536: E/AndroidRuntime(429): java.lang.NullPointerException 
07-11 11:50:02.536: E/AndroidRuntime(429): at com.androidbegin.sidemenututorial.Fragment1$1.onClick(Fragment1.java:46) 
07-11 11:50:02.536: E/AndroidRuntime(429): at android.view.View.performClick(View.java:2408) 
07-11 11:50:02.536: E/AndroidRuntime(429): at android.view.View$PerformClick.run(View.java:8816) 
07-11 11:50:02.536: E/AndroidRuntime(429): at android.os.Handler.handleCallback(Handler.java:587) 
07-11 11:50:02.536: E/AndroidRuntime(429): at android.os.Handler.dispatchMessage(Handler.java:92) 
07-11 11:50:02.536: E/AndroidRuntime(429): at android.os.Looper.loop(Looper.java:123) 
07-11 11:50:02.536: E/AndroidRuntime(429): at android.app.ActivityThread.main(ActivityThread.java:4627) 
07-11 11:50:02.536: E/AndroidRuntime(429): at java.lang.reflect.Method.invokeNative(Native Method) 
07-11 11:50:02.536: E/AndroidRuntime(429): at java.lang.reflect.Method.invoke(Method.java:521) 
07-11 11:50:02.536: E/AndroidRuntime(429): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
07-11 11:50:02.536: E/AndroidRuntime(429): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
07-11 11:50:02.536: E/AndroidRuntime(429): at dalvik.system.NativeStart.main(Native Method) 

回答

0

您应该使用rootView夸大你的意见。

EditText userName = (EditText)rootView.findViewById(R.id.userName); 
0

v是你点击,没有布局,所以你不应该叫v.findViewById(...)的单一视图。尝试

EditText userName = (EditText)findViewById(R.id.userName); 
String user_Name = userName.getText().toString(); 
EditText password = (EditText)findViewById(R.id.password); 
0

您应该使用视图对象(rootview)来初始化意见

EditText userName,password; // delcare variables as class member. 
View rootView = inflater.inflate(R.layout.fragment1, container, false); 
userName = (EditText)rootview.findViewById(R.id.userName); 
password = (EditText)rootview.findViewById(R.id.password); 

也没有必要initalize按钮点击美景每次。

移动按钮点击之外的初始化。

相关问题