fragment能打开activity并返回数据吗
答案:2 悬赏:80 手机版
解决时间 2021-02-13 13:57
- 提问者网友:温旧梦泪无声
- 2021-02-12 20:01
fragment能打开activity并返回数据吗
最佳答案
- 五星知识达人网友:北方的南先生
- 2021-02-12 21:41
能。在fragment里面直接startActivityForResult,然后在fragment的onActivityResult里面接收。切记千万不要fragment.getActivity().startForResult,这样会执行activity的onActivityResult。
全部回答
- 1楼网友:低血压的长颈鹿
- 2021-02-12 23:02
1、在实际应用中,我们不仅要向activity中传数据,也要从activity中返回数据。虽然传递数据和返回数据类似,也可以采用前面四篇中提到的4种方法,但是一般建议采用intent对象的方式来返回数据,使用这种方式返回数据,需要使用startactivityforresult方法来显示activity;
2、新建android项目“android_intent_forresult”,打开布局文件“activity_main.xml”,添加“linearlayout”、“textview”、“editview”等标签,代码如下:
3、新建布局文件“other.xml”,添加“textview”、“editview”、“button”标签,代码如下:
4、新建“otheractivity.java”文件,并使其继承“activity”,添加“oncreate”方法,代码如下:package com.android.myintent;
import android.app.activity;
import android.os.bundle;
public class otheractivity extends activity {
@override
protected void oncreate(bundle savedinstancestate) {
// todo auto-generated method stub
super.oncreate(savedinstancestate);
setcontentview(r.layout.other);
}
}
5、在“androidmanifest.xml”清单文件中加入“activity”,加入代码:
6、在“main.java”中添加button成员和“setonclicklistener”,实现两个button的跳转,点击第一个activity后,出现第二个activity;在此方法内部创建意图,用“startactivityforresult”启动意图,并在main类里重写“onactivityresult”;添加“edittext”成员,实现数据的输入并传入intent中。代码如下:
package com.android.myintent;
import android.r.integer;
import android.os.bundle;
import android.app.activity;
import android.content.intent;
import android.view.menu;
import android.view.view;
import android.widget.button;
import android.widget.edittext;
public class main extends activity {
private button button;
private final static int requestcode = 1;// 表示返回的结果码
private edittext one, two, result; // 数据输入
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
one = (edittext) this.findviewbyid(r.id.one);
two = (edittext) this.findviewbyid(r.id.two);
result = (edittext) this.findviewbyid(r.id.result);
button = (button) this.findviewbyid(r.id.button);
button.setonclicklistener(new view.onclicklistener() {
@override
public void onclick(view arg0) {
// todo auto-generated method stub
// 点击后获得用户录入的值
int a = integer.parseint(one.gettext().tostring());
int b = integer.parseint(two.gettext().tostring());
// 创建意图
intent intent = new intent(main.this, otheractivity.class);
// 将值传入意图
intent.putextra("a", a);
intent.putextra("b", b);
startactivityforresult(intent, requestcode);// 表示可以返回结果
}
});
}
// 再重写一个onactivityresult方法,作用是将当前activity中的数据传递到另一个activity的意图中后,实现跳转,再回传回来。
@override
protected void onactivityresult(int requestcode, int resultcode, intent data) {
// todo auto-generated method stub
super.onactivityresult(requestcode, resultcode, data);
}
@override
public boolean oncreateoptionsmenu(menu menu) {
// inflate the menu; this adds items to the action bar if it is present.
getmenuinflater().inflate(r.menu.main, menu);
return true;
}
}
7、在“otheractivity.java”文件中添加button和textview成员,获取意图中的数据,代码如下:package com.android.myintent;
import android.app.activity;
import android.content.intent;
import android.os.bundle;
import android.widget.button;
import android.widget.textview;
public class otheractivity extends activity {
private button button;
private textview textview;
@override
protected void oncreate(bundle savedinstancestate) {
// todo auto-generated method stub
super.oncreate(savedinstancestate);
setcontentview(r.layout.other);
// 实例化button和textview
button = (button) this.findviewbyid(r.id.button2);
textview = (textview) this.findviewbyid(r.id.msg);
intent intent = getintent(); // 获取intent
// 取出intent中的值
int a = intent.getintextra("a", 0);
int b = intent.getintextra("b", 0);
textview.settext(a + " + " + b + " = " + " ? ");
}
}
运行一下,看下效果:
点击“计算结果”,跳转到第二个activity:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯