gpt4 book ai didi

java - 我如何使用界面共享数据黑白 fragment 。我希望单击“编辑 fragment 1”中的文本数据的按钮显示在 fragment 2的 TextView 中

转载 作者:行者123 更新时间:2023-12-02 10:32:56 25 4
gpt4 key购买 nike

主类是

public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener, MyInterface {

ViewPager vp;
TabLayout tabLayout;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

vp = (ViewPager) findViewById(R.id.mViewpager_ID);
this.addPages();
tabLayout = (TabLayout) findViewById(R.id.mTab_ID);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
tabLayout.setupWithViewPager(vp);
tabLayout.setOnTabSelectedListener(this);
}

private void addPages() {
MyPagerAdapter pagerAdapter = new MyPagerAdapter(this.getSupportFragmentManager());
pagerAdapter.addFragment(new Fragment1());
pagerAdapter.addFragment(new Fragment2());
pagerAdapter.addFragment(new Fragment3());
vp.setAdapter(pagerAdapter);
}

public void onTabSelected(TabLayout.Tab tab) {
vp.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}

@Override
public void onTabReselected(TabLayout.Tab tab) {
}
@Override
public String setOnDataChangedListener(String Text) {
return Text;
}
@Override
public void onFragmentChanged(int value) {
if (value == 0) {
vp.setCurrentItem(value);
}
if (value == 1) {
vp.setCurrentItem(value);
}
if (value == 2) {
vp.setCurrentItem(value);
}
}}

fragment 1是:

public class Fragment1 extends Fragment {
private MyInterface obj;
String a;
Context c;
@Override
public void onAttach(Context context) {
super.onAttach(context);
obj = (MyInterface) context;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView=inflater.inflate(R.layout.activity_fragment1,container,false);
EditText edttext=(EditText)rootView.findViewById(R.id.edttxt);
final String data=edttext.getText().toString();
a="testing_communication";
Button btn=(Button)rootView.findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
obj.setOnDataChangedListener(data);
obj.onFragmentChanged(1);
}
});
return rootView;
}
@Override
public String toString() {
String title="Fragment:1";
return title;}}

fragment 2是..

public class Fragment2 extends Fragment implements MyInterface {
@Nullable

TextView tv;
String text;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View bootView2=inflater.inflate(R.layout.activity_fragment2,container,false);
tv = (TextView) bootView2.findViewById(R.id.textv);
setOnDataChangedListener(text);
tv.setText(text);
return bootView2;

}

@Override
public String toString() {
String title="Fragment:2";
return title;
}

@Override
public String setOnDataChangedListener(String Text) {
return Text;
}
@Override
public void onFragmentChanged(int value) {
}
}

接口(interface)是:

public interface MyInterface {
String setOnDataChangedListener(String Text);
void onFragmentChanged(int value);}

页面数据是:

public class MyPagerAdapter extends FragmentPagerAdapter {
ArrayList<Fragment> fragments=new ArrayList<>();
public MyPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
public void addFragment(Fragment f)
{
fragments.add(f);
}
@Override
public CharSequence getPageTitle(int position) {
String title=fragments.get(position).toString();
return title.toString();
}}

在按钮单击fragment1时,我可以在fragment2处移动,但无法随数据移动。它似乎在onclicklistener body obj.onFragmentChanged(1)下的fragment1中;工作正常。但是 obj.setOnDataChangedListener(data.);不管用..如果有人可以提供帮助,我将非常感谢您。

最佳答案

这里有很多问题。造成这个问题的主要有两个

首先,在 Fragment1 中,您将上下文转换为 MyInterface 并使用它来设置数据。这种情况下的上下文将是包含 Fragment1 的 Activity ,而不是包含 Fragment2

其次,您的 setDataChangedListener 基本上不执行任何操作。它接收一个字符串,然后返回相同的内容,而不将其存储在任何地方。

您需要Fragment2来实现setDataChangedListener,接收一个String,然后将其存储在类变量中。

关于java - 我如何使用界面共享数据黑白 fragment 。我希望单击“编辑 fragment 1”中的文本数据的按钮显示在 fragment 2的 TextView 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53499136/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com