gpt4 book ai didi

java - 在android中将数据从一个 fragment 传递到下一个 fragment

转载 作者:行者123 更新时间:2023-12-01 14:50:54 26 4
gpt4 key购买 nike

在我的一个项目中,我使用 2 个 fragment 。一个 fragment 显示项目列表。所以我希望当在第一个 fragment 中选择主题时,应在另一个 fragment 中更改详细信息。我能够传递的数据从一个 fragment 到另一个 fragment ,但 View 没有改变。我应该在哪种方法中实现第二个 fragment 的 View ,以便它可以相应地改变。请给我很好的教程或示例。

在这里我必须开发一个android示例,我必须运行应用程序意味着在我的第一个 fragment 的水平 ListView 上很好地显示类别名称。我必须单击任何类别意味着我如何在第二个 fragment 上传递类别名称。请给我这个问题的解决方案。

我使用了以下代码:

public class Home extends FragmentActivity{

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

第一个 fragment 代码:

public class MainActivity extends Fragment {
static final String URL = "http://dev2.mercuryminds.com/webservices/new_feed_articls.xml";

static String KEY_CATEGORY = "Categories";

static final String KEY_TITLE = "Category";
LazyAdapter adapter;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_main,
container, false);


final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element

NodeList nl = doc.getElementsByTagName(KEY_TITLE);


// looping through all song nodes &lt;song&gt;
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String> ();
Element e = (Element) nl.item(i);
map.put( KEY_TITLE,((Element)nl.item(i)).getAttribute("name"));

// map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
songsList.add(map);
}
HorizontalListView list = (HorizontalListView) view.findViewById(R.id.listView1);
adapter = new LazyAdapter(getActivity(), songsList);
list.setAdapter(adapter);

list.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map = songsList.get(position);
Intent in = new Intent();
in.setClass(getActivity(), SubCate.class);
// in.putExtra(KEY_TITLE, map.get(KEY_TITLE));

startActivity(in);
}

});
return view;
}}

我如何在第二个 Activity 上显示类别名称...请给我这些代码...

编辑:

嗨,我已经更改了代码,就像我的第一个 Activity 一样:

   HashMap<String, String> map = songsList.get(position);
SubCate frag = (SubCate) getFragmentManager().findFragmentById(R.id.frag_2);
if (frag != null && frag.isInLayout()) {
frag.setText(getCapt(map));
}
}
private String getCapt(HashMap<String, String> map) {
if (map.containsValue("notchbolly")) {
return "dadad";
}
return "veeman";

下一个 Activity :

public void setText(String item) {
TextView view = (TextView) getView().findViewById(R.id.cate);
view.setText(item);
}

它醒得很好,同时直接在 if (map.containsValue("notchbolly")) 上提及名称。但是我必须显示名称而不直接提及名称。如果我必须单击任何类别意味着类别名称显示在下一个 fragment 。我该怎么办??????

最佳答案

使用接口(interface)方法我们可以在 fragment 之间传输数据

在fragmentA中创建接口(interface)并向该接口(interface)发送数据,并在fragmentB中实现该接口(interface)方法并获取所需数据

下面的代码对你有用

FragmentA 中的代码:

    public class FragmentA extends Fragment  {

// interface method
public InterfaceDataCommunicatorBetweenfragmentAToFragmentB iInterfaceDataCommunicatorBetweenfragmentAToFragmentB;

// Data to send
String mDataString;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

// use this line where u send data
iInterfaceDataCommunicatorBetweenfragmentAToFragmentB.upDatedData(mDataString);

View view = inflater.inflate(R.layout.sent_box, container, false);


return view ;
}

/**
* Interface method to send data to fragmentB
*
*/
public interface InterfaceDataCommunicatorBetweenfragmentAToFragmentB {
public void upDatedData(String data);

}
}

FragmentB 中的代码:

   class FragmentB extends Fragment implements InterfaceDataCommunicatorBetweenfragmentAToFragmentB {

// interface method
public InterfaceDataCommunicatorBetweenfragmentAToFragmentB iInterfaceDataCommunicatorBetweenfragmentAToFragmentB;

// fragmentA data
String mgetUpdatedData


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {


View view = inflater.inflate(R.layout.get_box, container, false);


return view ;
}

/**
* Interface method coming from fragment a to fragmentB after implement interface in fragmentB
*/
public void upDatedData(String data) {
this.mgetUpdatedData = data;
}

@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try {
iInterfaceDataCommunicatorBetweenfragmentAToFragmentB = (InterfaceDataCommunicatorBetweenfragmentAToFragmentB ) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement interface");
}

}

关于java - 在android中将数据从一个 fragment 传递到下一个 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14868395/

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