不能在片段中工作吐司

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()后,问题解决了

以上是关于不能在片段中工作吐司的主要内容,如果未能解决你的问题,请参考以下文章

当我从用户获取数据并将其保存到 SQLite 数据库中时,我应该怎么做才能使列表视图在片段中工作

更改片段后如何取消显示堆叠的吐司?

typescript 吐司不在离子的全局错误处理程序中工作

调整片段中 TextView 的文本大小

片段内的按钮

回收站视图未显示在片段中