gpt4 book ai didi

java - 需要一些帮助才能通过 setText 问题将变量从 fragment X 传递到 fragment Y

转载 作者:行者123 更新时间:2023-12-02 07:17:37 25 4
gpt4 key购买 nike

希望您一切顺利并祝贺您的​​工作!设想 :我有 3 个 fragment 文件,Pagegauchefragment、PageMilieufragment 和 PageDroiteFragment,由 2 个文件 FragmentsSliderActivity 和 MyPagerAdapter 管理。第一个和第二个是带有 EditText 的数据字段,由用户填写。最后一个是保存数据用户文件的 ListView。从 ListView (最后一个 fragment )中,用户单击文件有 3 种可能性:1. 导入文件/2. 删除文件/3. 取消(我使用操作栏过程来保存数据)。现在的问题是:我无法将要刷新的数据(使用 setText)传递给其他 fragment 。日志:标签:IIputConnectionWrapper/文本:非 Activity 输入连接上的 getSelectedText,非 Activity 输入连接上的 setCompositionText。

  View W =inflater.inflate(R.layout.page_droite_layout,container, false);
this.mListView = (ListView) W.findViewById(R.id.ListView01);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1, tabRevues);
this.mListView.setAdapter(adapter);

this.mListView.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
View WW =inflater.inflate(R.layout.page_gauche_layout,container, false);
file_name = (EditText) WW.findViewById(R.id.label_LiquidBase);


//int item = position;
item_name = ((TextView)view).getText().toString();
AlertDialog.Builder ad = new AlertDialog.Builder(getActivity());

ad.setTitle("Selection Recettes : " + item_name);
ad.setMessage("Que souhaitez-vous faire ?");

ad.setPositiveButton("Importer",
new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int id) {
try {

这里我将文本传递给setText(例如):

file_name.setText("blahblah");

我认为我处于 Void 方法中,但我不知道如何传递变量...任何帮助都将不胜感激!克里斯托弗

最佳答案

从不建议在 Fragment 之间直接传递数据。相反,将数据从 fragment X 传递到 FragmentsSliderActivity,后者会将这些数据传递到 fragment Y。您可以通过 fragment 类中定义的接口(interface)来执行此操作,并实例化 onAttach() 中定义的回调。

有关如何执行此操作的更多信息,请参见此处 Communication With other Fragments

简单的例子,考虑 fragment A 和 fragment B。 fragment A 是一个列表 fragment ,每当选择一个项目时,它就会改变 fragment B 中显示的内容。很简单,对吧?

首先,定义 fragment A。

 public class FragmentA extends ListFragment{

//onCreateView blah blah blah

}

这是 fragment B

public class FragmentB extends Fragment{

//onCreateView blah blah blah

}

这是我的 FragmentActivity,它将管理它们

public class MainActivity extends FragmentActivity{

//onCreate
//set up your fragments

}

想必您已经有了类似的东西,现在您可以更改 FragmentA(我们需要从中获取一些数据的列表 fragment )。

    public class FragmentA extends ListFragment implements onListItemSelectedListener, onItemClickListener{

OnListItemSelectedListener mListener;

//onCreateView blah blah blah



// Container Activity must implement this interface
public interface OnListItemSelectedListener {
public void onListItemSelected(int position);
}


}


@Override
public void onAttach(Activity activity) {
super.onAttach(activity);

// This makes sure that the container activity has implemented
// the callback interface. If not, it throws an exception
try {
mListener = (OnListItemSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnListItemSelectedListener");
}
}


@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id){


//Here's where you would get the position of the item selected in the list, and pass that position(and whatever other data you need to) up to the activity
//by way of the interface you defined in onAttach

mListener.onListItemSelected(position);


}

这里最重要的考虑因素是你的父 Activity 实现这个接口(interface),否则你会得到一个异常。如果成功实现,每次选择列表 fragment 中的项目时,您的 Activity 都会收到其位置的通知。显然,您可以使用任意数量或类型的参数来更改界面,在本示例中,我们只是传递整数位置。希望这能澄清一点,祝你好运。

关于java - 需要一些帮助才能通过 setText 问题将变量从 fragment X 传递到 fragment Y,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14740533/

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