Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Android: oncreateoptionsmenu not called with asyncTask
- public class TopNewsActivity extends ListActivity {
- public static final String LOG_TAG = "Infra";
- private ProgressDialog progressDialog;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.listplaceholder);
- new BackgroundAsyncTask().execute();
- }
- public class BackgroundAsyncTask extends AsyncTask<String, Integer, ArrayList<HashMap<String, String>>> {
- @Override
- protected void onPreExecute() {
- progressDialog = new ProgressDialog(TopNewsGroup.group);
- progressDialog.setCancelable(true);
- progressDialog.setMessage("Loading...");
- progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
- progressDialog.setProgress(0);
- progressDialog.show();
- }
- @Override
- protected ArrayList<HashMap<String, String>> doInBackground(String... paths) {
- ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
- String xml = XMLfunctions.getTopNewsXML();
- Document doc = XMLfunctions.XMLfromString(xml);
- int numResults = XMLfunctions.numResults(doc);
- Log.d(LOG_TAG, "Number of Results: " + numResults);
- if ((numResults <= 0)) {
- Toast.makeText(TopNewsActivity.this, "No Result Found",Toast.LENGTH_LONG).show();
- return null;
- }
- NodeList nodes = doc.getElementsByTagName("result");
- for (int i = 0; i < nodes.getLength(); i++) {
- HashMap<String, String> map = new HashMap<String, String>();
- Element e = (Element) nodes.item(i);
- map.put("id", XMLfunctions.getValue(e, "id"));
- map.put("title", XMLfunctions.getValue(e, "title"));
- mylist.add(map);
- }
- return mylist;
- }
- @Override
- protected void onProgressUpdate(Integer... values) {
- super.onProgressUpdate(values);
- }
- protected void onPostExecute(ArrayList<HashMap<String, String>> result) {
- ListAdapter adapter = new SimpleAdapter(TopNewsActivity.this, result, R.layout.list_item, new String[] { "title" }, new int[] { R.id.item_title });
- setListAdapter(adapter);
- progressDialog.dismiss();
- final ListView lv = getListView();
- lv.setTextFilterEnabled(true);
- lv.setOnItemClickListener(new OnItemClickListener() {
- @SuppressWarnings("unchecked")
- @Override
- public void onItemClick(AdapterView<?> a, View view, final int position, long id) {
- HashMap<String, String> o = (HashMap<String, String>) lv.getItemAtPosition(position);
- Intent i = new Intent(TopNewsActivity.this, NewsDetails.class);
- i.putExtra("content_id", o.get("id"));
- i.putExtra("title", o.get("title"));
- i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- View v = TopNewsGroup.group.getLocalActivityManager().startActivity("ShowNews", i).getDecorView();
- // Again, replace the view
- TopNewsGroup.group.setContentView(v);
- }
- });
- }
- }
- public class MySimpleAdapter extends SimpleAdapter {
- public MySimpleAdapter(Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to) {
- super(context, data, resource, from, to);
- // TODO Auto-generated constructor stub
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.optionsmenu, menu);
- return true;
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item){
- switch (item.getItemId()){
- case R.id.refresh:
- startActivity(new Intent(this, TopNewsGroup.class));
- return true;
- case R.id.search:
- startActivity(new Intent(this, SearchActivity.class));
- return true;
- case R.id.info:
- startActivity(new Intent(this, TopNewsGroup.class));
- return true;
- case R.id.exit:
- finish();
- return true;
- }
- return false;
- }
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- return this.getCurrentActivity().onCreateOptionsMenu(menu);
- }
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- return this.getCurrentActivity().onOptionsItemSelected(item);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement