不能在片段中工作吐司
Posted
技术标签:
【中文标题】不能在片段中工作吐司【英文标题】:cannot work the toast in fragment 【发布时间】:2018-09-20 06:24:24 【问题描述】:我想在我的应用程序的 HomeFragment 中开发一个搜索功能,但它告诉我 toast 不起作用。
这是我的片段:
/**
* A simple @link Fragment subclass.
*/
public class HomeFragment extends Fragment
public HomeFragment()
// Required empty public constructor
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
super.onCreate(savedInstanceState);
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
rootView.findViewById(R.id.btnSearch).setOnClickListener(new View.OnClickListener ()
@Override
public void onClick(View v)
new SimpleSearchDialogCompat<>(HomeFragment.this, "Search...", "What are you looking for...?",
null, initData(), new SearchResultListener<Searchable>()
@Override
public void onSelected(BaseSearchDialogCompat baseSearchDialogCompat, Searchable searchable, int i)
Toast.makeText(HomeFragment.this, "" + searchable.getTitle(), Toast.LENGTH_SHORT).show();
baseSearchDialogCompat.dismiss();
).show();
// Inflate the layout for this fragment
// return inflater.inflate(R.layout.fragment_home, container, false);
);
return rootView;
private ArrayList<SearchModel> initData()
ArrayList<SearchModel>items =new ArrayList<>();
items.add(new SearchModel("Captain America"));
items.add(new SearchModel("Wonder Women"));
items.add(new SearchModel("Batman"));
items.add(new SearchModel("Iron Man"));
items.add(new SearchModel("Hulk"));
return items;
我已经尝试了每个答案,例如:
Toast.makeText(getActivity(), "" + searchable.getTitle(), Toast.LENGTH_SHORT).show();
和
Toast.makeText(getActivity().getApplicationContext(), "" + searchable.getTitle(), Toast.LENGTH_SHORT).show();
和
Toast.makeText(HomeFragment.this.getActivity(), "" + searchable.getTitle(), Toast.LENGTH_SHORT).show();
但它仍然无法为我工作。
【问题讨论】:
【参考方案1】:请试试这个:-
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState)
View rootView = inflater.inflate(R.layout.fragment_home, container, false);
rootView.findViewById(R.id.btnSearch).setOnClickListener(new View.OnClickListener ()
@Override
public void onClick(View v)
new SimpleSearchDialogCompat<>(HomeFragment.this, "Search...", "What are you looking for...?",
null, initData(), new SearchResultListener<Searchable>()
@Override
public void onSelected(BaseSearchDialogCompat baseSearchDialogCompat, Searchable searchable, int i)
Toast.makeText(getActivity(), "" + searchable.getTitle(), Toast.LENGTH_SHORT).show();
baseSearchDialogCompat.dismiss();
).show();
// Inflate the layout for this fragment
// return inflater.inflate(R.layout.fragment_home, container, false);
);
return rootView;
我已从您的代码中删除了super.onCreate(savedInstanceState);
。您错误地将这段代码放在onCreateView()
方法中。
【讨论】:
HomeFragment.this 不是上下文。您必须使用 getContext() 方法 Oki doki :D,如果对答案有帮助,请不要怀疑投票支持 @EeHang Tang - 你检查了我的答案? @ShaluTD 检查,等我一会儿 加入@JhonFredyTrujilloOrtega建议的getContext()后,问题解决了以上是关于不能在片段中工作吐司的主要内容,如果未能解决你的问题,请参考以下文章