activity向另一个activity中的fragment传值
2016-02-24 17:39
411 查看
列表内容
在学习和项目运用中会用到activity想另一个activity中的fragment传值,在网上看了很多前辈的帖子,自己总结写了个传值方式。举个例子,在一个商场的app中,主界面中嵌套了4fragment,中有一个是个人中心,点击个人中心的登录按钮跳到登录界面,在吧登录界面的用户名传回个人中心,有很多地方都会运用到,当然解决方法也有很多,比如把登录信息直接存到SharedPreferences中再到fragment中去判断,也可用startActivityForResult。
这里是关于用startActivityForResult来传值,直接上代码
这是主界面,主界面嵌套fragment,代码很简单就是绑定fragment
接下是fragment的相关操作,这里是一个textview和一个button,button点击跳转到登录界面,然后把登录界面的用户名传到textview中,布局文件就不贴了
接下来就是要传回数据的activity了
关于startActivityForResult传值就到这里了。Android新手,有不对的错误的地请指教
在学习和项目运用中会用到activity想另一个activity中的fragment传值,在网上看了很多前辈的帖子,自己总结写了个传值方式。举个例子,在一个商场的app中,主界面中嵌套了4fragment,中有一个是个人中心,点击个人中心的登录按钮跳到登录界面,在吧登录界面的用户名传回个人中心,有很多地方都会运用到,当然解决方法也有很多,比如把登录信息直接存到SharedPreferences中再到fragment中去判断,也可用startActivityForResult。
这里是关于用startActivityForResult来传值,直接上代码
这是主界面,主界面嵌套fragment,代码很简单就是绑定fragment
package com.demo.actyfrafmrntdemo; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { private Onefragment onefragment; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); onefragment=new Onefragment(); //链式编程风格 getFragmentManager().beginTransaction().add(R.id.fragment, onefragment).commit(); } }
接下是fragment的相关操作,这里是一个textview和一个button,button点击跳转到登录界面,然后把登录界面的用户名传到textview中,布局文件就不贴了
package com.demo.actyfrafmrntdemo; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import an 4000 droid.view.ViewGroup; import android.widget.Button; import android.widget.TextView; public class Onefragment extends Fragment { private View view; private Button mButton; private TextView mtTextView; @Override @Nullable public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { // TODO Auto-generated method stub return view = inflater.inflate(R.layout.fragment_layout, null); } @Override public void onActivityCreated(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onActivityCreated(savedInstanceState); mButton = (Button) view.findViewById(R.id.btn); mtTextView = (TextView) view.findViewById(R.id.text_view); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { startActivityForResult(new Intent(getActivity(), LogingActy.class), 1); } }); } /** * 此方法用来跳转的activity要传回的数据,以及接受到传回数据的要做的业务 * 这里因为只有一个activity返回数据,所以这里就只有一个resultCode,就直接接收返回值处理 */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); Bundle bundle = data.getExtras(); String namString = bundle.getString("name"); mtTextView.setText(namString); } }
接下来就是要传回数据的activity了
package com.demo.actyfrafmrntdemo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; public class LogingActy extends Activity{ private EditText nameView; private EditText pwdTextView; private Button mButton; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.loging_activity); nameView=(EditText)findViewById(R.id.name); pwdTextView=(EditText)findViewById(R.id.pwd); mButton=(Button)findViewById(R.id.brn_login); mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub String nameString=nameView.getText().toString(); String pwd=pwdTextView.getText().toString(); Intent intent=new Intent(); Bundle bundle=new Bundle(); bundle.putString("name", nameString); bundle.putString("pwd", pwd); intent.putExtras(bundle); // 1是返回的requestCode LogingActy.this.setResult(1,intent); //这里要直接干掉 finish(); } }); } }
关于startActivityForResult传值就到这里了。Android新手,有不对的错误的地请指教
相关文章推荐
- [PHP源码阅读]strlen函数
- 深入浅出ClassLoader测试代码
- 【BUG】windows使用部分软件界面模糊问题解决
- Jmeter参数化、断言、集合点
- GYM web API Whitepaper
- Xcode中archive打包的时候,出现you are not allowed to perform this operation.please..问题
- Android4.4的zygote进程
- 分享: 语音识别Matlab源码免费下载-智慧石
- Alternating Current
- Android为什么选择binder
- Android 6.0 fork Zygote时的存储权限管理
- 基于Struts2的供求信息网设计(三)
- 用Android代码实现打开USB调试
- Tomcat Connector三种运行模式(BIO, NIO, APR)的比较和优化
- use-gulp
- 别人java的博客。
- 【codevs1287】矩阵乘法(矩阵乘法)
- 利用postmessage间接实现iframe跨域调用父页面js函数
- pch 文件的创建
- View的事件分发机制记录