2012-04-12 99 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。