Android onItemClickListener()startActivity应用程序中的ListFragment
我无法从ListFragment上的onItemClickListener()调用startActivity(intent)。当我单击listview中的项目时,应用程序崩溃 代码如下:Android onItemClickListener()startActivity应用程序中的ListFragment,android,android-listview,android-listfragment,Android,Android Listview,Android Listfragment,我无法从ListFragment上的onItemClickListener()调用startActivity(intent)。当我单击listview中的项目时,应用程序崩溃 代码如下: public class AndroidFragment extends SherlockListFragment{ static{ StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permi
public class AndroidFragment extends SherlockListFragment{
static{
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
static final String URL = "***";
// XML node keys
static final String KEY_ITEM = "novost"; // parent node
//static final String KEY_ID = "id";
static final String KEY_NAME = "naslov";
static final String KEY_COST = "datum";
static final String KEY_DESC = "text";
static final String KEY_LINK = "link";
static final String KEY_LINK1 = "doc";
ArrayList<HashMap<String, String>> menuItems;
String[] from = { KEY_NAME, KEY_DESC, KEY_COST,KEY_LINK,KEY_LINK1};
/** Ids of views in listview_layout */
int[] to = { R.id.naslov, R.id.novost, R.id.datum,R.id.link,R.id.link1};
ListView list;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
new loadListView().execute();
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// getting values from selected ListItem
String name = ((TextView) view.findViewById(R.id.naslov)).getText().toString();
String cost = ((TextView) view.findViewById(R.id.datum)).getText().toString();
String description = ((TextView) view.findViewById(R.id.novost)).getText().toString();
String link = ((TextView) view.findViewById(R.id.link)).getText().toString();
String link1 = ((TextView) view.findViewById(R.id.link1)).getText().toString();
//String link_asd=link;
// Starting new intent
Intent in = new Intent(getActivity().getBaseContext(), SingleMenuItemActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
in.putExtra(KEY_DESC, description);
if(link==null)
{
link=null;
}else{
in.putExtra(KEY_LINK, link);
in.putExtra(KEY_LINK1, link1);
}
//in.putExtra("link1", link_asd);
startActivity(in);
}
});
}
/*@Override
public void onListItemClick(ListView list, View v, int position, long id) {
/**
* Toast message will be shown when you click any list element
//Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show();
String name = ((TextView) v.findViewById(R.id.naslov)).getText().toString();
String cost = ((TextView) v.findViewById(R.id.datum)).getText().toString();
String description = ((TextView) v.findViewById(R.id.novost)).getText().toString();
String link = ((TextView) v.findViewById(R.id.link)).getText().toString();
String link1 = ((TextView) v.findViewById(R.id.link1)).getText().toString();
//String link_asd=link;
// Starting new intent
Intent in = new Intent(getActivity(), SingleMenuItemActivity.class);
in.putExtra(KEY_NAME, name);
in.putExtra(KEY_COST, cost);
in.putExtra(KEY_DESC, description);
if(link==null)
{
}else{
in.putExtra(KEY_LINK, link);
in.putExtra(KEY_LINK1, link1);
}
//in.putExtra("link1", link_asd);
startActivity(in);
Log.e("error",name);
super.onListItemClick(list, v, position, id);
}*/
@Override
public void onResume() {
super.onResume();
//Log.w("Aplikacija_resume","Startovana" );
//new loadListView().execute();
}
public class loadListView extends AsyncTask<Integer, String, String>
{
private final ProgressDialog dialog = new ProgressDialog(getActivity());
@Override protected void onPreExecute()
{
//Toast.makeText(getActivity(), "Ucitavanje...", Toast.LENGTH_LONG).show();
//
this.dialog.setMessage("Molimo da sačekate ...");
super.onPreExecute();
}
@Override protected String doInBackground(Integer... args)
{ // updating UI from Background Thread
menuItems = new ArrayList<HashMap<String, String>>();
final XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_ITEM);
// looping through all item nodes <item>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_NAME, parser.getValue(e, KEY_NAME));
map.put(KEY_COST, "Datum: " + parser.getValue(e, KEY_COST));
map.put(KEY_DESC, parser.getValue(e, KEY_DESC));
map.put(KEY_LINK, parser.getValue(e, KEY_LINK));
map.put(KEY_LINK1, parser.getValue(e, KEY_LINK1));
// adding HashList to ArrayList
menuItems.add(map);
}
return null;
}
@Override
protected void onPostExecute(String args)
{
//Toast.makeText(getActivity(), "Ucitano", Toast.LENGTH_LONG).show();
SimpleAdapter adapter = new SimpleAdapter(getActivity().getBaseContext(), menuItems, R.layout.list_row, from, to);
setListAdapter(adapter);
if (this.dialog.isShowing()) {
this.dialog.dismiss();
}
// Instantiating an adapter to store each items
// R.layout.listview_layout defines the layout of each item
}
}
}
公共类AndroidFragment扩展了SherlockListFragment{
静止的{
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(策略);
}
静态最终字符串URL=“***”;
//XML节点密钥
静态最终字符串KEY\u ITEM=“novost”//父节点
//静态最终字符串键\u ID=“ID”;
静态最终字符串键\u NAME=“naslov”;
静态最终字符串键\u COST=“datum”;
静态最终字符串键\u DESC=“text”;
静态最终字符串键\u LINK=“LINK”;
静态最终字符串键\u LINK1=“doc”;
ArrayList菜单项;
字符串[]from={KEY\u NAME,KEY\u DESC,KEY\u COST,KEY\u LINK,KEY\u LINK1};
/**listview\u布局中的视图ID*/
int[]to={R.id.naslov,R.id.novost,R.id.datum,R.id.link,R.id.link1};
列表视图列表;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
新建loadListView().execute();
ListView lv=getListView();
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
//从选定的ListItem获取值
字符串名称=((TextView)view.findViewById(R.id.naslov)).getText().toString();
字符串成本=((TextView)view.findViewById(R.id.datum)).getText().toString();
字符串描述=((TextView)view.findViewById(R.id.novost)).getText().toString();
字符串链接=((TextView)view.findViewById(R.id.link)).getText().toString();
字符串link1=((TextView)view.findViewById(R.id.link1)).getText().toString();
//字符串链接\u asd=链接;
//开始新的意图
Intent in=新的Intent(getActivity().getBaseContext(),SingleMenuItemActivity.class);
in.putExtra(键名称、名称);
额外费用(关键成本、成本);
in.putExtra(图例说明、说明);
if(link==null)
{
link=null;
}否则{
in.putExtra(键链接,链接);
in.putExtra(链接1键,链接1键);
}
//in.putExtra(“link1”,link_asd);
星触觉(in);
}
});
}
/*@凌驾
public void onListItemClick(列表视图列表、视图v、整数位置、长id){
/**
*单击任何列表元素时,将显示Toast消息
//Toast.makeText(getActivity(),getListView().getItemAtPosition(position).toString(),Toast.LENGTH_LONG).show();
字符串名称=((TextView)v.findViewById(R.id.naslov)).getText().toString();
字符串成本=((TextView)v.findViewById(R.id.datum)).getText().toString();
字符串描述=((TextView)v.findViewById(R.id.novost)).getText().toString();
字符串链接=((TextView)v.findViewById(R.id.link)).getText().toString();
字符串link1=((TextView)v.findviewbyd(R.id.link1)).getText().toString();
//字符串链接\u asd=链接;
//开始新的意图
Intent in=新的Intent(getActivity(),SingleMenuItemActivity.class);
in.putExtra(键名称、名称);
额外费用(关键成本、成本);
in.putExtra(图例说明、说明);
if(link==null)
{
}否则{
in.putExtra(键链接,链接);
in.putExtra(链接1键,链接1键);
}
//in.putExtra(“link1”,link_asd);
星触觉(in);
Log.e(“错误”,名称);
super.onListItemClick(列表、v、位置、id);
}*/
@凌驾
恢复时公开作废(){
super.onResume();
//Log.w(“Aplikacija_简历”、“Startovana”);
//新建loadListView().execute();
}
公共类loadListView扩展了异步任务
{
private final ProgressDialog=新建ProgressDialog(getActivity());
@重写受保护的void onPreExecute()
{
//Toast.makeText(getActivity(),“Ucitavanje…”,Toast.LENGTH_LONG.show();
//
this.dialog.setMessage(“Molimo da sačekate…”);
super.onPreExecute();
}
@重写受保护的字符串doInBackground(整数…args)
{//从后台线程更新UI
menuItems=newarraylist();
final XMLParser=新的XMLParser();
字符串xml=parser.getXmlFromUrl(URL);//获取xml
Document doc=parser.getDomeElement(xml);//获取DOM元素
NodeList nl=doc.getElementsByTagName(键项);
//循环通过所有项目节点
对于(int i=0;ivalue
put(KEY_NAME,parser.getValue(e,KEY_NAME));
put(KEY_COST,Datum:+parser.getValue(e,KEY_COST));
put(KEY_DESC,parser.getValue(e,KEY_DESC));
put(KEY_-LINK,parser.getValue(e,KEY_-LINK));
put(KEY_LINK1,parser.getValue(e,KEY_LINK1));
//将哈希列表添加到ArrayList
menuItems.add(地图);
}
返回null;
}
@凌驾
受保护的void onPostExecute(字符串参数)
{
//Toast.makeText(getActivity(),“Ucitano”,Toast.LENGTH_LONG.show();
SimpleAdapter=新建SimpleAdapter(getActivity().getBaseContext(),菜单项,R.layout.list_行,fro