【问题标题】: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();

但它仍然无法为我工作。

【问题讨论】:

    标签: android android-fragments android-toast


    【解决方案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()后,问题解决了
    猜你喜欢
    • 2012-10-30
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多