gpt4 book ai didi

java - 从 ExpandableListView 调用的 Fragment Communicator 接口(interface)不起作用

转载 作者:行者123 更新时间:2023-12-01 10:18:41 24 4
gpt4 key购买 nike

我可以从子进程中提取数据并为其发送 toast 消息。但如果我尝试使用我的通讯器界面,它会立即崩溃。 Communicator 对于我的所有其他 Fragment 和 FragmentList 都运行良好。无论我在何处调用 ExpandableListView fragment 中的基本 toastMessage 方法,它都会不断崩溃。

/**
* Created by petakirikiri on 3/03/16.
*/
public class ThingsInputFragmentExpandableList extends Fragment {
View v;
HashMap<String, List<String>> movies_category;
List<String> movies_list;
ExpandableListView Exp_list;
MoviesAdapter adapter;
Communicator comm;

public ThingsInputFragmentExpandableList() {

}

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


v = inflater.inflate(R.layout.movies_expandablelist_fragment, container, false);
return v;
}

@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
super.onCreate(savedInstanceState);

Exp_list = (ExpandableListView) v.findViewById(R.id.exp_list);
movies_category = ThingsDataProvider.getInfo();
movies_list = new ArrayList<String>(movies_category.keySet());
adapter = new MoviesAdapter(getActivity(), movies_category, movies_list);
Exp_list.setAdapter(adapter);
Exp_list.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
@Override
public void onGroupExpand(int groupPosition) {
Toast.makeText(getActivity(), movies_list.get(groupPosition) + " is expanded", Toast.LENGTH_LONG).show();
}
});

Exp_list.setOnGroupCollapseListener(new ExpandableListView.OnGroupCollapseListener() {
@Override
public void onGroupCollapse(int groupPosition) {
Toast.makeText(getActivity(), movies_list.get(groupPosition) + " is collapsed", Toast.LENGTH_LONG).show();
}
});

Exp_list.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
if (movies_list.get(groupPosition) == "Determiners"){
comm.toastMessageTest();
}
else if (movies_list.get(groupPosition) == "Things"){


}
else if (movies_list.get(groupPosition) == "Adjectives"){


}

return false;
}
});
}
}

public interface Communicator {
public void toastMessageTest();
public void setIntransitiveFragment();
public void setTransitiveFragment();
public void setPronounFragment();
public void setThingFragment();
public void setLocationFragment();
public void setVerb(String data);
public void setTense(String data);
public void setSubject(String data);
public void setDeterminerSubject(String data);
public void setThingSubject(String data);
public void setAdjectiveSubject(String data);
}

public class MainActivity extends Activity implements Communicator{

@Override
public void toastMessageTest() {
Toast.makeText(this, "This works", Toast.LENGTH_LONG).show();
}
}

最佳答案

我认为您每次在 Fragment 中都会出现空指针异常,因为您没有初始化和设置

Communicator comm;

你需要的是重写fragment中的onAttach 示例:

 @Override
public void onAttach(Context context) {
super.onAttach(context);
if (context instanceof Communicator )
conn = (Communicator )context;
}

@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (activity instanceof Communicator )
conn= (Communicator)activity;
}

关于java - 从 ExpandableListView 调用的 Fragment Communicator 接口(interface)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35757933/

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