1

私のコードは次のとおりです: Activity1 (メイン): データベースに行があるかどうかを確認します。そうでない場合は、メイン ビューを読み込みます。少なくとも 1 つの開始 Activity2 がある場合

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

アクティビティ 2: テーブルの行に db 情報を入力する moreprojects ビューを読み込みます。

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

非アクティビティ dbhandler: すべてのデータベースの要素が含まれています (Activity1 で言及されている db)。これで、Activity2 で、以下のメソッドを呼び出す行を削除できます。その if(num==0) 内で、Activity2 に Activity1 を呼び出してもらいたいと考えています。Activity1 は、プロジェクトを作成できる画面です。

public void deleteContact(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_blah, KEY_ID + " = ?",
            new String[] { String.valueOf(id) });
    int num = numOfRows();
    Log.d("Testing","Number of rows: "+num);

    if(num ==0){
        //go back to Activity1
    }
    db.close();
}

これが理にかなっていることを願っています。

次のような複数の異なることを試してきました: activity2 で finish(); を行うメソッドを作成する... しかし、それは何もしません。Activity2 をリロードしているようです。

助けてください!

4

4 に答える 4

2

startActivityForResult ではなく startActivity を使用して activity2 を開いたため、finishの呼び出しは元に戻るはずです。

public void deleteContact(int id) {
    SQLiteDatabase db = this.getWritableDatabase();
    db.delete(TABLE_blah, KEY_ID + " = ?",
            new String[] { String.valueOf(id) });
    int num = numOfRows();
    Log.d("Testing","Number of rows: "+num);

    if(num ==0){
        finish();
    }
    db.close();
}

これは、deleteContact が Activity2 にあることを前提としています

編集 :

finish を呼び出すと、Activity1 の onResume メソッドのみが呼び出されます。Activity1
に戻って再起動するには、次のようにします。

finish();
startActivity(new Intent(this, Activity1.class));

Android のアクティビティ ライフサイクルを確認する

于 2012-04-12T19:08:07.513 に答える
0

アクティビティの終了を呼び出すだけです。それよりも発信者に戻ります

于 2012-04-12T19:03:55.923 に答える
0
finish();

トリックを行う必要があります。それが「アクティビティ 2 のリロード」である場合は、num変数を出力する両方のアクティビティにいくつかのログ ステートメントを追加します。私の推測では、Activity2 では何らかの形で num が 0 ですが、Activity1 がフォーカスを取得すると、何らかの形で num が > 0 になり、if ステートメントのために Activity2 が再起動されます。

于 2012-04-12T19:05:08.440 に答える
0

アクティビティ A を終了してアクティビティ 2 に戻りたい場合は、finish(); を呼び出すだけです。A で、それはうまくいきます

于 2012-04-12T19:03:15.613 に答える