在我的应用程序中,我有一个活动类A,它有一个带有游标适配器的列表视图。 从A我可以通过按下按钮进入活动B.从B我可以通过按下按钮返回A(而不是按BACK按钮)。这意味着创建了A活动的新实例。
从这一点开始,如果按下BACK键,则会破坏当前的A活动并弹出B.如果我再次按BACk,则会弹出初始A活动。我希望很清楚。
我的问题是,当第二个A活动被销毁时,数据库连接会以静态方式重置。因此,最后,当显示初始A活动时,列表视图将为空。
我的问题是:我应该尝试为A活动创建一个实例,还是应该更改数据库连接(将其与活动实例链接)?
非常感谢 的Gratzi
答案 0 :(得分:0)
First Of All在A类中携带ListView。单击任何Listview时调用Class B活动的startActivity方法而不调用任何finish()。 我希望你已经在做什么了。 现在在第二个活动中用于调用活动A的按钮(不是后退按钮)。在其clickListener中调用Activity A不要调用startActivity(intentForA)而是调用finish();结束活动B.这将恢复暂停的A活动..
我希望这会有所帮助
答案 1 :(得分:0)
您需要创建3个活动而不是2个。 有一个MAIN活动,并没有真正显示任何内容。
所以你有活动A,它是你可以处理与DB等连接的主要活动。
然后,活动B和C可以是您使用过的A和B.
活动A(主要活动)可以拥有自己的静态实例,因此您可以引用它 变量等 - 或者 - 您可以使用Intent.put等将数据从一个活动传递到另一个活动
我更喜欢全局静态实例方式,因为我是Java上的一个小学校。
编辑: 忘记提及,要处理应用程序的“关闭”,活动B或C也必须关闭活动。
public class ActivityA extends Activity {
ActivityA act_a_instance;
public int some_integer = 22;
@Override
public void onCreate(Bundle savedInstanceState) {
act_a_instance = this;//Now you can reference this Activity outside
//Your creation stuff etc
}
}
public class ActivityB extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
//Your creation stuff etc
//Reference stuff from ActivityA like so :
int temp_integer = ActivityA.act_a_instance.some_integer;
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.options_back:
startActivity(new Intent(this, ActivityC.class));
break;
}
}
@Override
protected void onStop() {
finish();
super.onStop();
}
}
public class ActivityB extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
//Your creation stuff etc
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.options_back:
startActivity(new Intent(this, ActivityB.class));
break;
}
}
@Override
protected void onStop() {
finish();
super.onStop();
}
}
答案 2 :(得分:0)
使用以下代码希望这可以解决您的问题
Intent i = new Intent(B.this, A.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);