在OnItemClickListener无法显示吐司里面片段 [英] Can not show Toast in OnItemClickListener inside Fragment
问题描述
我想在片段
来创建一个的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 aFragment
. 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 usegetActivity()
instead ofyourClass.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 itDetailActivity
then you have to change youronItemClickListener()
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 youronCreate()
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屋!