gpt4 book ai didi

java - 从一个 fragment 中调用另一个 fragment 中的方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:35:26 26 4
gpt4 key购买 nike

我已经尝试了一段时间(也在此处搜索),希望在按下其他 fragment 中的按钮时帮助我刷新 MainFragment 中的 listView。 sommeone 可以解释我如何让它工作吗?

这是带有函数的 MainFragment(我排除了其他函数,因为我看不到它们是如何贡献的):

public class MainFragment extends Fragment {
public void otherList() {
SQLite db = new SQLite(getActivity());
db.open();
Calendar sCalendar = Calendar.getInstance();
String day = sCalendar.getDisplayName(Calendar.DAY_OF_WEEK,
Calendar.LONG, Locale.ENGLISH);
Cursor c = db.getAllRecords(day);
Calendar cal = Calendar.getInstance();
int hour = cal.get(Calendar.HOUR_OF_DAY);
arrayOfBars.clear();
if (c.moveToFirst()) {
do {
String country = c.getString(0);
String city = c.getString(1);
String bar = c.getString(2);
String timeStart = c.getString(3);

String[] h = timeStart.split(":");
int times = Integer.parseInt(h[0]);

String timeEnd = c.getString(4);
String[] h2 = timeEnd.split(":");
int timee = Integer.parseInt(h2[0]);

String placeLaLo = c.getString(5);
String description = c.getString(6);
String likes = c.getString(7);
String offer = c.getString(8);

if (hour < (times + 1) || hour < (timee)) {
getPrefs = PreferenceManager
.getDefaultSharedPreferences(MainFragment.this
.getActivity());
boolean lay = getPrefs.getBoolean("boolean", false);
if (lay == true) {
while (times < timee) {
timeStart = times + ":" + h[1];
times++;
timeEnd = times + ":" + h2[1];
arrayOfBars.add(new BarObject(country, city, bar,
timeStart, timeEnd, placeLaLo, description,
likes, offer, bar));
}
} else {
arrayOfBars.add(new BarObject(country, city, bar,
timeStart, timeEnd, placeLaLo, description,
likes, offer, bar));
}
}

} while (c.moveToNext());

Collections.sort(arrayOfBars, new BarObject.CompST());

lv2.setAdapter(null);
adapter = new BarAdapter(getActivity(), arrayOfBars);
lv2.setAdapter(adapter);
} else {
Toast.makeText(getActivity(), "No database found",
Toast.LENGTH_LONG).show();
}
db.close();
}

这是另一个 fragment :

public class SocialMedia extends Fragment {
ImageButton facebook, twitter, layoutS;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.social_media, container, false);
layoutS = (ImageButton) view.findViewById(R.id.ibLayout);

layoutS.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences getPrefs = PreferenceManager
.getDefaultSharedPreferences(SocialMedia.this
.getActivity());
boolean lay = getPrefs.getBoolean("boolean", false);
SharedPreferences.Editor e = getPrefs.edit();
lay = !lay;
e.putBoolean("boolean", lay);
e.commit();
//Here I want to call otherList() from MainFragment
}
});
return view;
}

最佳答案

FragmentManager fm = getFragmentManager(); 
MainFragment fragm = (MainFragment)fm.findFragmentById(R.id.main_fragment);
fragm.otherList();

这段代码最适合我。而且看起来很简单

关于java - 从一个 fragment 中调用另一个 fragment 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27217362/

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