2012-07-08 37 views
8

Tôi đang thay thế đoạn hiện có bằng phân đoạn mới và tôi có thể thấy quan điểm của mình nhưng trong khi đặt trên trình nghe nhấp chuột vào nút, nó trả về giá trị rỗng. Tôi nhận được ngoại lệ sau:findViewById trả về null theo phân đoạn

?:??: W/?(?): java.lang.NullPointerException 
?:??: W/?(?): at com.biggu.shopsavvy.fragments.xxxxxxxx.onCreateView(xxxxxx.java:34) 
?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:870) 
?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1080) 
?:??: W/?(?): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:622) 
?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) 
?:??: W/?(?): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420) 
?:??: W/?(?): at android.os.Handler.handleCallback(Handler.java:615) 
?:??: W/?(?): at android.os.Handler.dispatchMessage(Handler.java:92) 
?:??: W/?(?): at android.os.Looper.loop(Looper.java:137) 
?:??: W/?(?): at android.app.ActivityThread.main(ActivityThread.java:4745) 
?:??: W/?(?): at java.lang.reflect.Method.invokeNative(Native Method) 
?:??: W/?(?): at java.lang.reflect.Method.invoke(Method.java:511) 
?:??: W/?(?): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
?:??: W/?(?): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
?:??: W/?(?): at dalvik.system.NativeStart.main(Native Method) 

Tôi không biết điều gì đang xảy ra?

Các mã trên OnCreateView:

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.capture_card_phone_number, container, false); 
     mPhone = (AutoCompleteTextView) getActivity().findViewById(R.id.phone_number); 
     Button next = (Button) getActivity().findViewById(R.id.capture_phone_next); 
     next.setOnClickListener(this); 
     // next.setEnabled(false); 

     return view; 

Tôi cũng đã nhập khẩu com.big.xxxxxxx.R

Cảm ơn trước sự giúp đỡ của bạn

+0

Tôi đã làm sạch và tái tạo R.java. – Preethi

+0

plz thêm mã trong phương thức onCreateView(), đặc biệt trong dòng 34 của lớp xxxxx.java của bạn và thêm bố cục xml nữa cho đoạn của bạn – Houcine

+0

Cảm ơn bạn đã trả lời. Tôi đã tăng lượt xem trong OnCreateView của đoạn đó là lý do tại sao tôi có thể xem đoạn nhưng không thể đặt bất kỳ loại người nghe nào vì nút của tôi có vẻ là rỗng (mặc dù tôi có thể thấy nút) – Preethi

Trả lời

23
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 

    savedInstanceState) { 
      View view = inflater.inflate(R.layout.capture_card_phone_number, container, false); 
      mPhone = (AutoCompleteTextView) getActivity().findViewById(R.id.phone_number); 
      Button next = (Button) view.findViewById(R.id.capture_phone_next); 
      next.setOnClickListener(this); 


      return view; 

Bạn phải gọi findViewById trên quan điểm của bạn - không phải trên hoạt động của bạn.

+1

có lý do gì khiến bạn sử dụng findviewbyid trong hoạt động trong hoạt động nhưng trên màn hình trong một đoạn? – user1549672

0

Lý do là trong chế độ onCreateView Chế độ xem phân đoạn chưa được tạo, vì vậy nó sẽ trả về giá trị rỗng. Hãy thử làm điều đó trong onResume và nó sẽ trả lại cho bạn chế độ xem:

@Override 
public void onResume() { 
    super.onResume(); 
    mPhone = (AutoCompleteTextView) getActivity().findViewById(R.id.phone_number); 
    Button next = (Button) getActivity().findViewById(R.id.capture_phone_next); 
    next.setOnClickListener(this); 
} 
Các vấn đề liên quan