Java 通过活动传递和保存数据
我有三项活动Java 通过活动传递和保存数据,java,android,android-studio,android-activity,Java,Android,Android Studio,Android Activity,我有三项活动 设置活动[A]//在此处输入将在主活动中使用的数字 主活动[B]//其中使用设置活动输入的编号 暂停活动[C]//这是一个对话框,用于暂停主活动并提供重置选项 我的问题是,我找不到一种方法将该号码从a传递到B,并且当用户从C重置B时,该号码将被保存。我尝试了一些方法,但我无法使其工作。 我的代码: A: B: C: 感谢您的帮助在启动暂停活动C时,您可以使用startActivityForResult()。startActivityForResult()使您能够将数据发送到接收
- 设置活动[A]//在此处输入将在主活动中使用的数字
- 主活动[B]//其中使用设置活动输入的编号
- 暂停活动[C]//这是一个对话框,用于暂停主活动并提供重置选项
感谢您的帮助在启动暂停活动C时,您可以使用startActivityForResult()。startActivityForResult()使您能够将数据发送到接收活动,在您的情况下,该活动是主活动C。请参阅您还可以设置(数据)片段以交换数据吗 在其onCreate集合中 setRetainInstance(真) 为您的card2string添加一些setter/getter 在不同的活动中,通过以下方式获得一个实例: 例如在主要活动中
public final static String DATAFRAG = "DATA";//public so you can use it from any Activity
在例如onCreate或您需要数据的位置:
FragmentManager fm = getFragmentManager();
dataFrag = (DataFragment) fm.findFragmentByTag(MainActivity.DATAFRAG);
if (dataFrag == null)
{
dataFrag = new DataFragment();
dataFrag.setCard2String("something");
fm.beginTransaction().add(dataFrag, MainActivity.DATAFRAG).commit();
}
确保在数据片段中重写
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
}
在onCreate中,使用捆绑包来保存和恢复数据,以防片段被销毁
HTH修复了它。新代码:
A:
B:
C:
可能重复的可能重复的可能重复的你能举个例子吗plz你能更具体一点吗plz原因当你说“创建id”时无法理解你的意思是什么活动setRetainInstance阻止收集片段,因此它需要在片段的OnCreate中,并获取对datafragment的引用,好的,在参与交换的每个活动中,您都需要打电话给Fragmentmanager以获取它。。。最好的IMHO是将该调用放在onCreate中,但您也可以将其放在您真正需要的地方,啊,是的,如果您想传播回数据更改的事件,您还需要一个侦听器接口,在DataFragment中,列出要通知的侦听器,注意在这种情况下您是在哪个线程中
public final static String DATAFRAG = "DATA";//public so you can use it from any Activity
FragmentManager fm = getFragmentManager();
dataFrag = (DataFragment) fm.findFragmentByTag(MainActivity.DATAFRAG);
if (dataFrag == null)
{
dataFrag = new DataFragment();
dataFrag.setCard2String("something");
fm.beginTransaction().add(dataFrag, MainActivity.DATAFRAG).commit();
}
@Override
public void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceState(outState);
}
Intent timerdintent = new Intent(timer_settings.this, timer_2.class);
Bundle timer2extras = new Bundle();
timer2extras.putString("timer2string", String.valueOf(npsum));
timerdintent.putExtras(timer2extras);
startActivity(timerdintent);
SharedPreferences pref = getApplicationContext().getSharedPreferences("timer2stringpref", MODE_PRIVATE);
Bundle timer2extras = getIntent().getExtras();
if (timer2extras != null) {
String timer2string = timer2extras.getString("timer2string");
starttimer = Integer.parseInt(timer2string);
SharedPreferences.Editor editor = pref.edit();
editor.putInt("value", starttimer);
editor.apply();
} else {
int starttimerx = pref.getInt("value", 0);
starttimer = starttimerx;
}
Intent resetintent = new Intent(timer_2_pause.this, timer_2.class);
startActivity(resetintent);