0

アプリがクラッシュし、次のメッセージが表示されました:

android.support.v4.app.Fragment$InstantiationException: フラグメント blabla.WelcomDialog をインスタンス化できません: クラス名が存在し、パブリックであり、パブリックである空のコンストラクターがあることを確認してください

インストール後にアプリを初めて起動したときに、エミュレーター(Android 2.2を実行)でクラッシュしました。アプリを起動すると、スプラッシュ スクリーンが表示されます。初めての場合は、スプラッシュ スクリーンが表示されている間にバックグラウンドの初期化が行われます。それ以外の場合は、スプラッシュ スクリーンが 1.5 秒間続きます。スプラッシュ スクリーン アクティビティが終了すると、メインのアプリ アクティビティが呼び出されます。メイン アクティビティの onCreate() メソッドでは、最後に WelcomeDialog を表示します。

new WelcomeDialog( this ).show( getSupportFragmentManager(), "");

ウェルカム ダイアログ クラスは次のとおりです。

class WelcomeDialog extends SherlockDialogFragment//DialogFragment 
{

    MyApp activity;

    /**
     * 
     */
    public WelcomeDialog( MyApp activity )
    {       
        super();    
        this.activity = activity;
    }




    @Override
    public void onCreate( Bundle savedInstanceState ) 
    {
        super.onCreate(savedInstanceState);
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) 
    {
        final View v = inflater.inflate( R.layout.welcome, container, false );

        Button  btn;
        btn = (Button)v.findViewById( R.id.close_btn );        
        btn.setOnClickListener( new View.OnClickListener() 
        {

            @Override
            public void onClick( View view ) 
            {   
                dismiss();
            }
        });

        getDialog().getWindow().setBackgroundDrawableResource( R.color.transparent );
        getDialog().getWindow().clearFlags( WindowManager.LayoutParams.FLAG_DIM_BEHIND );


        getDialog().setCanceledOnTouchOutside( false );
        return v;
    }   


    /*
     * 
     */
    public  WelcomeDialog   Show( FragmentManager fm ) 
    {
        show( fm, "" );
        return  this;
    }


}

これで、ダイアログ フラグメントにはパラメーターのないコンストラクターのみが必要であり、Bundle オブジェクトを使用してパラメーターを渡す必要があること (および、アクティビティを取得するための getActivity() メソッドがあること) はわかっていますが、気になるのは、初めてアプリを立ち上げました。フラグメントが以前にインスタンス化されたことがない場合でも、その例外が発生した可能性はありますか (したがって、再接続は不可能でした)。 このバグが 1 回だけ発生したことを明確にしたいと思います (デバッグ目的で何度もアプリをインストール/削除しましたが、発生しませんでした)。 別の質問: ウェルカム ダイアログを別のファイルに入れる必要がありますか? ありがとうございました。

4

1 に答える 1