首页 > 代码库 > Fragment与Activity的互相通讯
Fragment与Activity的互相通讯
注意:在SDK 23以上的API中,Fragment的onAttach(Activity activity) is deprecated(过时了),取而代之的是onAttach(Context context),然而新的onAttach方法在API小于23的设备上运行,会出现不被调用的情况。
解决办法:
API小于19的设备上,用import android.support.v4.Fragment代替android.app.Fragment
*******************************
在慕课网学习到Fragment和Activity的通讯
习惯使用Fragment动态的加载办法,所以没有加上静态加载的办法。
当时在调用Onattach方法的时候自动调用的onattach(Context context)当在执行的时候报错Null pointer,后来改成Activity activity后就没有报错了,解决办法是用android.support.v4.Fragment包代替android.app.Fragment包
Activity的代码
1 public class MainActivity extends AppCompatActivity implements Fragment1.Mylistener{ 2 private EditText editText; 3 private Button button; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 editText=(EditText)findViewById(R.id.edit_text); 9 button=(Button)findViewById(R.id.button);10 button.setOnClickListener(new View.OnClickListener() {11 @Override12 public void onClick(View view) {13 Bundle bundle= new Bundle();14 String text= editText.getText()+"";15 bundle.putString("key",text);16 Fragment1 fragment1= new Fragment1();17 fragment1.setArguments(bundle);18 FragmentManager fragmentManager= getFragmentManager();19 FragmentTransaction fragmentTransaction= fragmentManager.beginTransaction();20 fragmentTransaction.add(R.id.frame,fragment1,"fragment1");21 fragmentTransaction.commit();22 Toast.makeText(MainActivity.this,"已接受text:"+text,Toast.LENGTH_SHORT).show();23 }24 });25 }26 @Override27 public void sendtext(String w) {28 Toast.makeText(MainActivity.this,"Received"+w,Toast.LENGTH_SHORT).show();29 }30 }
Fragment的代码
1 public class Fragment1 extends Fragment{ 2 public String code="Thanks"; 3 public Mylistener mylistener; 4 public interface Mylistener{ 5 public void sendtext(String w); 6 } 7 8 @Override 9 public void onAttach(Context context) {10 mylistener=(Mylistener)context;11 super.onAttach(context);12 }13 14 @Nullable15 @Override16 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {17 View view=inflater.inflate(R.layout.fragment,container,false);18 String text=getArguments().get("key")+"";19 Toast.makeText(getActivity(),"已成功接收到"+text,Toast.LENGTH_SHORT).show();20 Toast.makeText(getActivity(),"sendMessageToActivity"+code,Toast.LENGTH_SHORT).show();21 mylistener.sendtext(code);22 return view;23 24 }25 26 }
Fragment与Activity的互相通讯
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。