ListFragment の onItemClickListener() から startActivity(intent) を呼び出すことに問題があります。リストビューからアイテムをクリックすると、アプリケーションがクラッシュします。
コードはここにあります:
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
}
}
}