2012-04-12 13 views
1

ここに私のコードです: アクティビティ1(主):データベースに行があるかどうかを確認します。表示されていない場合は、メインビューを読み込みます。少なくとも1つのアクティビティが開始されている場合前のアクティビティを手動で戻す

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:すべてのデータベース項目(アクティビティ1に記載されている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(); 
} 

これは意味があると思います。

私は、 finish2を実行するactivity2のメソッドを作成していますが、何もしません。それはちょうどActivity2をリロードするようです。

助けてください!

答えて

2

あなたはstartActivityではなくstartActivityForResultを使用して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であることを想定

EDIT:

呼び出し仕上げのみ呼び出しますActivity1のonResumeメソッドは私が推測します
Activity1に戻り、それを再起動するには:

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

チェックアンドロイドのactivity life cycle

+0

削除接触はdbhandler(非活性)です。私がしたのは、finish2を実行するactivity2のメソッドを作成することでした。メソッドを呼び出してフィニッシュを実行するオブジェクトをdbhandlerに作成しました。フィニッシュはActivity1のonCreate()を再起動していないようです。それは可能ですか? – Denis

+0

の場合は、deleteContactからnumを返し、num == 0の場合はdeleteContact testを呼び出すときにactivity2を呼び出し、finish()を呼び出します。 –

+0

どのように私はonCreateを再起動しますか?または、Activity1全体を再開すると思いますか? – Denis

0

アクティビティAを終了してアクティビティ2に戻すには、finish()を呼び出します。 Aで動作し、それが動作します

0

あなたの活動について終了を呼び出してください。 発信者に戻るより

0
finish(); 

トリックを行う必要があります。もしそれが "reloading activity2"であれば、あなたのnum変数を出力する両方のアクティビティにいくつかのログステートメントを追加します。私の推測では、何らかの理由でnumがActivity2では0であるが、Activity1がフォーカスを取ったときに何らかの理由で> 0になり、if文のためにActivity2が再起動されることになります。

関連する問題