最简单的Fragment通信
这里你需要新建两个Activity(ActivityA和ActivityB),另外还需要一个Fragment(FragmentM)
首先进行activity_a.xml的代码,不做过多解释
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.lenovo.app2.ActivityA">
<TextView
android:id="@+id/tv_a"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="aaa"
android:textSize="40sp"
android:gravity="center"/>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_a"
android:layout_width="match_parent"
android:layout_height="match_parent">
</android.support.v4.view.ViewPager>
</LinearLayout>
同样的,fragment_m.xml代码需要设置一个按钮
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.lenovo.app2.fragment.FragmentM">
<!-- TODO: Update blank fragment layout -->
<Button
android:id="@+id/a2b_btn"
android:layout_width="match_parent"
android:layout_height="50dp"
android:text="跳转到ActivityB"/>
</FrameLayout>
之后便开始ActivityA.java部分:
首先你同样需要把准备工作做好
public class ActivityA extends AppCompatActivity {
private ViewPager viewPager;
private List<Fragment> fragmentList = new ArrayList<Fragment>();
private MyPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_a);
bind();
//创建适配器
MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager(),fragmentList);
//绑定适配器
viewPager.setAdapter(adapter);
}
private void bind() {
viewPager = findViewById(R.id.viewpager_a);
tv = findViewById(R.id.tv_a);
}
}
然后对于activity_a中的TextView进行一个对象的定义(tv)和绑定ID,至此,你便可以写最重要的自定义方法了
public void test(String text){
tv.setText(text);
}
public void test(string text)中定义的text为传递至FragmentM中的字符串变量;
tv.setText(text)调用了setText方法进行传值
然后就可以在FragmentM.java中进行接收值
做一下简单的准备工作,细节很重要
public class FragmentM extends Fragment {
private Button a2bBtn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e(TAG, "onCreateView");
View view = inflater.inflate(R.layout.fragment_m, container, false);
a2bBtn = view.findViewById(R.id.a2b_btn);
return view;
}
}
a2bBtn添加点击事件
a2bBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ActivityA activityA = (ActivityA) getActivity();
activityA.test("android");//用ActivityA的对象调用它的方法
}
});
ActivityA activityA = (ActivityA) getActivity();定义一个activityA对象,进行类型强转;
activityA.test("");用ActivityA的对象调用它的方法,将“”内的字符串传递给ActivityA;