2012-04-12 67 views
1

以下是我的代碼: Activity1(main):檢查db是否有任何行。如果沒有,請加載主視圖。如果它至少有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:包含所有數據庫的東西(db在Activity1中提到)。現在,在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中創建一個方法,它完成(); ...但是這並沒有做任何事情。它似乎重新加載Activity2。

請幫忙!

回答

2

調用finish應該回去,因爲你開活性2使用startActivity不startActivityForResult:

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是活性2

編輯:

調用結束才調用我猜想Activity1的onResume方法
要返回到Activity1並重新啓動它,您可以:

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

檢查Android的activity life cycle

+0

刪除聯繫人在dbhandler(非活動)。我所做的是在activity2中創建一個執行完成的方法。在dbhandler中創建了調用該方法並執行完成的對象。完成似乎沒有重新啓動Activity1中的onCreate()。那可能嗎? – Denis 2012-04-12 19:17:21

+0

也許剛剛從deleteContact返回num,在調用deleteContact test時如果num == 0,則調用activity2中的num,然後調用finish(); – 2012-04-12 19:19:53

+0

我將如何去重新啓動onCreate?或者我想重新啓動整個Activity1? – Denis 2012-04-12 19:21:42

0

當你想完成活動A並回到活動2時,只需調用finish();在A,這將工作

0

只需致電完成您的活動。 比回撥給來電者

0
finish(); 

應該做的伎倆。如果這是「重新加載activity2」,那麼我會添加一些日誌語句到這兩個活動,將打印出你的num變量。我的猜測是,在Activity2中num的值爲0,但當Activity1獲得焦點時,num以某種方式> 0,然後由於if語句而重新啓動Activity2。