1

私はさまざまな方法を試しており、null ポインター例外を取得しています。

シナリオ: テーブル内の行数が 0 の場合、Activity1 は開始時に読み込まれ、Activity2 を呼び出します。行数が 0 の場合、Activity1 に戻り、その呼び出しが db ハンドラーから呼び出されるようにします。データベース ハンドラー クラスでは、次のようになります。

    if(num ==0){
        Activity1 bs1 = new Activity1();
        Context context = bs1.getApplicationContext();
        Intent intent = new Intent();//
        intent.setClass(context, Activity1.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(intent);

    }

Activity1 onCreate()

    int num = db.numOfRows();
    if(num==0){
        setContentView(R.layout.main);
    } else {    
        startActivity(new Intent(this, Activity2.class));//
    }

Activity2 onCreate()

        super.onCreate(savedInstanceState);
        setContentView(R.layout.moreprojects);
        populateRows();

前もって感謝します。

4

3 に答える 3

3

Activity クラスを自分でインスタンス化しないでください。この方法で開始してみてください:

Intent i = new Intent(context, MainActivity.class);
context.startActivity(i);
于 2012-04-12T13:34:12.087 に答える
1

新しいアクティビティを呼び出すためにコンストラクターを使用しないでください。下記参照:

Context context = bs1.getApplicationContext();
Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //required to launch from non-activity
context.startActivity(intent);
于 2012-04-12T13:35:05.003 に答える
0

まだアクティビティになっていないコンテキストからアクティビティを開始することはできません。あなたの場合、解決策はありません。ユーザーがアクティビティを開始したい場合は、PendingIntent を使用して通知を送信することを検討してください。

于 2012-04-12T14:12:06.487 に答える