中易网

singletask模式下activity怎么传值

答案:1  悬赏:80  
解决时间 2021-04-28 12:52
  • 提问者网友:无依无靠的距离
  • 2021-04-28 02:44
singletask模式下activity怎么传值
最佳答案
  • 二级知识专家网友:何以畏孤独
  • 2021-04-28 02:54
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("tag", "onNewINtent执行了");
setIntent(intent);
String ringName = intent.getStringExtra("ringName");
Log.e("tag", ringName+"传过来的值");
if (ringName != null) {
pager.setCurrentItem(1);
}
}

当然,如果activity的启动模式是standard,那么每次都重新创建一个新的activity.这样intent也是最新的.就不用通过setIntent来更新这个intent.

我这个项目中,FunctionActivity中里面是四个Fragment,这样
我从其他Activity跳转到FunctionActivity是不会实例化,通过getIntent()方法也不能获得最新的intent,为了解决
这个办法。还是在onNewIntent方法中,将更新的intent通过getIntent().putExtras(intent);共享出去,如下
所示:

@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
Log.e("tag", "onNewINtent执行了");
setIntent(intent);
getIntent().putExtras(intent);
}

这样在与它关联的Fragment中,就可以调用

@Override
public void onResume() {
super.onResume();
// 第一次进入这个页面,下面的方法是不会执行的,因为ringName是null
String ringName = getActivity().getIntent().getStringExtra("ringName");
if (ringName != null) {
newSound.setText(ringName);
Log.e("tag", ringName + "要保存的值");
SharedPreferenceUtil.setString(getActivity(),
SharedPreferenceUtil.RINGTONE_NAME, ringName);
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息