2014-01-08 61 views
0

我試圖使用活動的背景下,片段裏。而我得到這個錯誤獲取上下文中片段的Android

01-08 13:51:14.662: E/AndroidRuntime(10334): FATAL EXCEPTION: main 
01-08 13:51:14.662: E/AndroidRuntime(10334): java.lang.NullPointerException 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.app.Dialog.<init>(Dialog.java:154) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.app.Dialog.<init>(Dialog.java:131) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at com.iween.newinfiniteapp.PendingApprovals$2.onClick(PendingApprovals.java:238) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.view.View.performClick(View.java:4212) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.view.View$PerformClick.run(View.java:17476) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.os.Handler.handleCallback(Handler.java:800) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.os.Handler.dispatchMessage(Handler.java:100) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.os.Looper.loop(Looper.java:194) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at android.app.ActivityThread.main(ActivityThread.java:5371) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at java.lang.reflect.Method.invokeNative(Native Method) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at java.lang.reflect.Method.invoke(Method.java:525) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
01-08 13:51:14.662: E/AndroidRuntime(10334): at dalvik.system.NativeStart.main(Native Method) 

代碼中我得到錯誤

approval_button.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        final Dialog dialog = new Dialog(context);//this is line no 238 
        dialog.requestWindowFeature(dialog.getWindow().FEATURE_NO_TITLE); 
        dialog.setContentView(R.layout.approve_box); 
        dialog.setCancelable(false); 
        Button approve = (Button) dialog.findViewById(R.id.approve); 
        Button cancel = (Button) dialog.findViewById(R.id.cancel); 
        cancel.setOnClickListener(new OnClickListener() { 

         @Override 
         public void onClick(View arg0) { 
          dialog.dismiss(); 
         } 
        }); 

        dialog.show(); 

       } 
      }); 

這裏我設置背景

public class PendingApprovals extends Fragment { 

    final Context context = getActivity(); 


    @Override 
    public View onCreateView(
      LayoutInflater inflater, 
      ViewGroup container, 
      Bundle savedInstanceState){ 
     View rootView = inflater.inflate(R.layout.main, container, false); 
+0

你在哪裏調用getActivity()?它是否總是空或在配置更改後像旋轉一樣? –

+1

你在哪裏調用final Context context = getActivity(); ? – Blackbelt

回答

1

可能你的片段還沒有附加到你的活動當你exec UTE:

final Context context = getActivity(); // looks like class field initialization 

調用它直接,如:MyFragmentClass.this.getActivity()

+0

感謝this.i得到了我的解決方案 – Developer

0

你應該得到內部onActivityCreated活動的參考。

@Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onActivityCreated(savedInstanceState); 
        context = getActivity(); 
    } 

一旦該功能被調用,活動僅在片段內可用。

相關問題