2016-11-24 3 views
0

ダイアログクラススニペットに23から25とminSdkVersionがにbuildtoolversionを更新した後にクラッシュさ:新しいダイアログ(コンテキスト)は、14から15

public class Progress { 

    private Context mContext; 

    /** 
    * constructor 
    * @param context 
    */ 
    public Progress(Context context) { 
     this.mContext = context; 
    } 

    /** 
    * show the progress bar 
    * @return 
    */ 
    public Dialog showProgress() { 
     Dialog pDialog = new Dialog(mContext); 
     pDialog.setCancelable(false); 
     pDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     pDialog.setContentView(new MaterialProgressBar(mContext), new ViewGroup.LayoutParams(100, 100)); 
     pDialog.getWindow().setBackgroundDrawable(
       new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
     pDialog.show(); 
     return pDialog; 
    } 



    /** 
    * dismiss the progress bar 
    * @param pDialog 
    */ 
    public void dismissProgress(Dialog pDialog) { 
     if (pDialog != null && pDialog.isShowing()) { 
      pDialog.dismiss(); 
     } 
    } 
} 

フラグメント・コール呼び出し]ダイアログでonCreatemethodに:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.mContext = getActivity();  
     progress = new Progress(mContext); 
    progress.showProgress(); 
} 

例外:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources$Theme android.content.Context.getTheme()' on a null object reference 
                   at android.app.Dialog.<init>(Dialog.java:175) 
                   at android.app.Dialog.<init>(Dialog.java:149) 
                   at com.contus.mcomm.views.Progress.showProgress(Progress.java:44) 
                   at com.contus.mcomm.fragments.ProductListFragment.setUserVisibleHint(ProductListFragment.java:154) 
                   at android.support.v4.app.FragmentStatePagerAdapter.setPrimaryItem(FragmentStatePagerAdapter.java:157) 
                   at android.support.v4.view.ViewPager.populate(ViewPager.java:1270) 
                   at android.support.v4.view.ViewPager.populate(ViewPager.java:1120) 
                   at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1646) 
                   at android.view.View.measure(View.java:18794) 
                   at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5951) 

Tha事前にnks ...!

+0

いくつかの例外スタックトレースを表示します... – snachmsm

+0

私は例外を追加しました。何か参考になるでしょう。 – Nisha

答えて

1

SDKのアップデートが問題ではない可能性があります。 getActivity()はnullを返します。 onViewCreated()メソッドのダイアログをフラグメントで表示しようとします。

より多くのあなたがこれを確認することができますについて - Fragmentは、この時点で任意のActivityに接続されていない可能性があるため、onCreateにnullを返すことがあります getActivity() returns null in Fragment function

+0

私はすべての方法を試しましたが、どれも動作しません。 – Nisha

+0

私はこれがバージョン変更のために起こっていると確信しています、ナットは解決策を見つけることができません。 – Nisha

+0

私はクラスProductListFragmentImplはフラグメント{}を拡張し、別のクラスはProductListFragmentImplを拡張してダイアログを表示する必要があります。 – Nisha

0

@androidnoobdevが

getActivity()を右指摘...あなたが移動する必要がありますonActivityCreated

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.mContext = getActivity(); //do you really need this? 
} 

@Override 
public void onActivityCreated(Bundle savedInstanceState){ 
    super.onActivityCreated(savedInstanceState); 
    progress = new Progress(getActivity()); 
    progress.showProgress(); 
} 

にあなたのコードは、それがその後、表示されない場合は、を装着されていませんが適切とその親Activity

ない二つの方法もある。

@Override 
public void onAttach(Activity activity) { 
    super.onAttach(activity); 
} 

@Override 
public void onAttach(Context context) { 
    super.onAttach(context); 
} 

最初のものは、PARAMとしてActivityと、API23に廃止されました2つ目は、同じAPIのバージョンで導入されました。ここであなたのダイアログ作成コードを移動することもできます

関連する問題