gpt4 book ai didi

java - 从Activity中调用Fragment的方法不起作用?

转载 作者:行者123 更新时间:2023-11-29 20:33:40 26 4
gpt4 key购买 nike

我关注了this问题并尝试调用我的 fragment 中的方法。我正在尝试从 Activity 中调用该方法。但是它没有识别 fragment 的方法。这是我的代码:

XML:

<RelativeLayout
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"
android:id="@+id/peoplefragment">

<ListView
android:id="@+id/searchpeople_list"
android:layout_height="fill_parent"
android:layout_width="match_parent"
android:scrollbars="none"
android:background="#fff">
</ListView>

</RelativeLayout>

fragment 代码:

    public class SearchPeopleTab extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View v = inflater.inflate(R.layout.activity_search_people_tab, container, false);
View rootView = inflater.inflate(R.layout.activity_search_people_tab, container, false);
return rootView;
}

public static void UpdateResults(String requestSearch)
{
new GetSearchResults(requestSearch).execute();
}

class GetSearchResults extends AsyncTask<Void, Void, Void> {

String requestSearch;

GetSearchResults(String searchtext)
{
this.requestSearch = searchtext;
}

@Override
protected Void doInBackground(Void... params) {
}

Activity 代码:(调用Fragment的方法)

 private void PopulateResults() {

FragmentManager manager = (FragmentManager) getSupportFragmentManager();
Fragment fragment = manager.findFragmentById(R.id.peoplefragment);
fragment.UpdateResults(requestSearch); //thats the method in the fragment.

}

'UpdateResults()' 部分带有下划线,以下消息作为错误给出:

Cannot resolve method UpdateResults()

好像找不到方法。我做错了什么?

最佳答案

  1. 从方法中删除关键字 static

  2. 此外,将 fragment 存储在您创建的 SearchPeopleTab 引用变量中。

    你真的不需要存储FragmentManager的行,你可以直接使用getSupportFragmentManager();

    //FragmentManager fm = (FragmentManager) getSupportFragmentManager();
    SearchPeopleTab fragment = (SearchPeopleTab) getSupportFragmentManager().findFragmentById(R.id.peoplefragment);
    fragment.UpdateResults();

当使用静态方法时,它们是使用类名调用的。 当您希望在特定对象上调用方法时,该方法不应是静态的。

关于java - 从Activity中调用Fragment的方法不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31642344/

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