在OnItemClickListener无法显示吐司里面片段 [英] Can not show Toast in OnItemClickListener inside Fragment

查看:178
本文介绍了在OnItemClickListener无法显示吐司里面片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在片段来创建一个的ListView 。列表视图显示正确,但是当我遵循的code会显示错误。

 进口android.app.Fragment;
    进口android.content.Context;
    进口android.os.Bundle;
    进口android.view.LayoutInflater;
    进口android.view.View;
    进口android.view.ViewGroup;
    进口android.widget.AdapterView;
    进口android.widget.ArrayAdapter;
    进口android.widget.ListView;
    进口android.widget.Toast;    公共类ServiceFragment扩展片段{
        私人的ListView serviceList;
        私有String [] serviceString;
        公共ServiceFragment(){}
        @覆盖
        公共查看onCreateView(LayoutInflater充气器,容器的ViewGroup,
         捆绑savedInstanceState){
         查看rootView = inflater.inflate(R.layout.fragment_service,集装箱,FALSE);           //生成列表服务
            serviceList =(ListView控件)rootView.findViewById(R.id.ServiceList);
            serviceString = getResources()getStringArray(R.array.service_list)。            ArrayAdapter<串GT; objAdapter =新ArrayAdapter<串GT;(this.getActivity(),android.R.layout.simple_list_item_1,serviceString);
            serviceList.setAdapter(objAdapter);           //上点击项侦听器
           serviceList.setOnItemClickListener(新AdapterView.OnItemClickListener(){
             @覆盖
             公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
                字符串itemValue =(字符串)serviceList.getItemAtPosition(位置);
                INT itemPosition =位置;                Toast.makeText(ServiceFragment.this,位置:+ itemPosition +列表项:+ itemValue,Toast.LENGTH_LONG).show();             }
          });         返回rootView;
        } // onCreateView结束} //类ServiceFragment结束

这有什么错我的code?为什么没有吐司显示?

有可能在点击项目启动活动的细节,我可以描述项目的意义

假设
列表项=苹果,芒果,香蕉
的onClick项目细节视图=苹果是一个品牌或水果,香蕉是一种水果,芒果是一个很好的水果,


解决方案

  

有什么毛病我code?为什么吐司不显示


既然你是一个片段必须使用 getActivity()而不是 yourClass.this

更改吐司来的:

  Toast.makeText(getActivity(),位置:+ itemPosition +列表项:+ itemValue,Toast.LENGTH_LONG).show();

修改

有关细节的活动必须创建一个活动首先,让我们把它叫做 DetailActivity ,那么你必须改变你的 onItemClickListener()来的:

  serviceList.setOnItemClickListener(新AdapterView.OnItemClickListener(){
         @覆盖
         公共无效onItemClick(适配器视图<>母公司,观景,INT位置,长的id){
            字符串itemValue =(字符串)serviceList.getItemAtPosition(位置);
            INT itemPosition =位置;            Toast.makeText(getActivity(),位置:+ itemPosition +列表项:+ itemValue,Toast.LENGTH_LONG).show();          意向意图=新意图(getActivity(),DetailActivity.class);
          intent.putExtra(DetailProductClicked,itemValue);
          startActivity(意向);         }
      });

因此​​,在您 DetailActivity.class 你必须把这个在你的的onCreate()

 字符串nameFruit = intent.getStringExtra(DetailProductClicked);

然后,要看你对这个活动,你可以这样做的:

 如果(nameFruit.equals(苹果){
   tv.setText(nameFruit +是一个品牌或水果);
}
如果(nameFruit.equals(芒果){
   tv.setText(nameFruit +是一个很好的水果);
}
如果(nameFruit.equals(香蕉){
   tv.setText(nameFruit +是一种水果);
}

I am trying to create a ListView in a Fragment. The listView appear correctly but when I complied the code shows error.

    import android.app.Fragment;
    import android.content.Context;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.AdapterView;
    import android.widget.ArrayAdapter;
    import android.widget.ListView;
    import android.widget.Toast;

    public class ServiceFragment extends Fragment {
        private ListView serviceList;
        private String[] serviceString;
        public ServiceFragment(){}


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

           //build the list service
            serviceList = (ListView) rootView.findViewById(R.id.ServiceList);
            serviceString = getResources().getStringArray(R.array.service_list);

            ArrayAdapter<String> objAdapter = new ArrayAdapter<String>(this.getActivity(), android.R.layout.simple_list_item_1,serviceString );
            serviceList.setAdapter(objAdapter);

           //on click item Listener
           serviceList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
             @Override
             public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String  itemValue    = (String) serviceList.getItemAtPosition(position);
                int itemPosition     = position;

                Toast.makeText(ServiceFragment.this,"Position :"+itemPosition+"  ListItem : " +itemValue , Toast.LENGTH_LONG).show();

             }
          });

         return rootView;
        }//end of onCreateView

}//end of class ServiceFragment

What's wrong with my code? Why doesn't Toast show up?

is it possible on click item start a detail activity where I can describe the meaning of item

Suppose List Item = Apple ,Mango, Banana onClick Item Details view = Apple is a brand or fruit, Banana is a fruit,Mango is a good fruit,

解决方案

What Wrong with my code ? Why the Toast does not show

Since you are on a Fragment you must use getActivity() instead of yourClass.this.

Change your Toast to this :

Toast.makeText(getActivity(),"Position :"+itemPosition+" ListItem : " +itemValue , Toast.LENGTH_LONG).show();

EDIT

For a detail Activity you must create an Activity first let's call it DetailActivity then you have to change your onItemClickListener() to this :

 serviceList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
         @Override
         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            String  itemValue    = (String) serviceList.getItemAtPosition(position);
            int itemPosition     = position;

            Toast.makeText(getActivity(),"Position :"+itemPosition+"  ListItem : " +itemValue , Toast.LENGTH_LONG).show();

          Intent intent = new Intent(getActivity(), DetailActivity.class);
          intent.putExtra("DetailProductClicked", itemValue);
          startActivity(intent);

         }
      });

So in your DetailActivity.class you have to put this on your onCreate()

String nameFruit = intent.getStringExtra("DetailProductClicked");

Then depends what you have on this Activity you can do something like :

if (nameFruit.equals("Apple"){
   tv.setText(nameFruit +" is a brand or fruit");
}
if (nameFruit.equals("Mango"){
   tv.setText(nameFruit +" is a good fruit");
}
if (nameFruit.equals("Banana"){
   tv.setText(nameFruit +" is a fruit");
}

这篇关于在OnItemClickListener无法显示吐司里面片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆