2013-03-19 49 views
-1

我嘗試使用此MenuItem加載不同的活動時,我單擊menuitem(具體來說 - 幫助)正確的活動User1Tap.class不加載(它帶我到AddEditCountry。類代替)如何使用此菜單項加載不同的活動

import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.AlertDialog; 
import android.app.ListActivity; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.database.Cursor; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.CursorAdapter; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.AdapterView.OnItemClickListener; 

public class CountryList extends ListActivity { 

public static final String ROW_ID = "row_id"; 
private ListView conListView; 
private CursorAdapter conAdapter; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    conListView=getListView(); 
    conListView.setOnItemClickListener(viewConListener); 

    // map each name to a TextView 
    String[] from = new String[] { "name" }; 
    int[] to = new int[] { R.id.countryTextView }; 
    conAdapter = new SimpleCursorAdapter(CountryList.this, R.layout.country_list, null, from, to); 
    setListAdapter(conAdapter); // set adapter 
} 


@Override 
protected void onResume() 
{ 
    super.onResume(); 
    new GetContacts().execute((Object[]) null); 
} 


@Override 
protected void onStop() 
{ 
    Cursor cursor = conAdapter.getCursor(); 

    if (cursor != null) 
     cursor.deactivate(); 

    conAdapter.changeCursor(null); 
    super.onStop(); 
}  


private class GetContacts extends AsyncTask<Object, Object, Cursor> 
{ 
    DatabaseConnector dbConnector = new DatabaseConnector(CountryList.this); 

    @Override 
    protected Cursor doInBackground(Object... params) 
    { 
     dbConnector.open(); 
     return dbConnector.getAllContacts(); 
    } 

    @Override 
    protected void onPostExecute(Cursor result) 
    { 
     conAdapter.changeCursor(result); // set the adapter's Cursor 
     dbConnector.close(); 
    } 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) 
    { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.country_menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
     case R.id.editItem: 
      Intent addEditContact = 
       new Intent(this, AddEditCountry.class); 

      addEditContact.putExtra(CountryList.ROW_ID, rowID); 
      addEditContact.putExtra("name", nameTv.getText()); 
      addEditContact.putExtra("cap", capTv.getText()); 
      addEditContact.putExtra("code", codeTv.getText()); 
      startActivity(addEditContact); 
      return true; 

     case R.id.deleteItem: 
      deleteContact(); 
      return true; 

     case R.id.help: 
      Intent i = new Intent(ViewCountry.this, User1Tap.class); 
      CountryList.this.startActivity(i); 
            this.finish(); 
       return true; 

     default: 
      return super.onOptionsItemSelected(item); 
     } 
    } 

    private void deleteContact() 
    { 

     AlertDialog.Builder alert = new AlertDialog.Builder(ViewCountry.this); 

     alert.setTitle(R.string.confirmTitle); 
     alert.setMessage(R.string.confirmMessage); 

     alert.setPositiveButton(R.string.delete_btn, 
     new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int button) 
      { 
       final DatabaseConnector dbConnector = 
        new DatabaseConnector(ViewCountry.this); 

       AsyncTask<Long, Object, Object> deleteTask = 
        new AsyncTask<Long, Object, Object>() 
        { 
        @Override 
        protected Object doInBackground(Long... params) 
        { 
         dbConnector.deleteContact(params[0]); 
         return null; 
        } 

        @Override 
        protected void onPostExecute(Object result) 
        { 
         finish(); 
        } 
        }; 

       deleteTask.execute(new Long[] { rowID });    
      } 
     } 
    ); 

     alert.setNegativeButton(R.string.cancel_btn, null).show(); 
    } 
} 

country_menu.xml:

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="schemas.android.com/apk/res/android">; 
     <item android:id="@+id/addCountryItem" 
      android:title="@string/add_menu" 
      android:titleCondensed="@string/add_menu" 
      android:showAsAction="always" 
      android:alphabeticShortcut="e"/> 
     <item android:id="@+id/help" 
      android:title="@string/help" 
      android:titleCondensed="@string/help" 
      android:alphabeticShortcut="e"/> 
    </menu> 
+0

那麼你的country_menu.xml樣子? – ElefantPhace 2013-03-19 04:03:32

+1

您可能複製了country_menu.xml中所有元素的相同ID – JoxTraex 2013-03-19 04:06:32

+0

<?xml version =「1.0」encoding =「utf-8」?>

<項機器人:ID =」 @ + ID/addCountryItem」 機器人:標題= 「@串/ add_menu」 機器人:titleCondensed = 「@串/ add_menu」 機器人:showAsAction android:title =「@ string/help」 android:titleCondensed =「@ string/help」=「always」 android:alphabeticShortcut =「e」/> NoobNinja 2013-03-19 04:12:12

回答

0

試試這個:

case R.id.help: 
    Intent i = new Intent(this, User1Tap.class); 
    startActivity(i); 
    finish(); 
    return true; 
+0

我試過了...仍在加載不正確的活動。 更新的Java(使用你的建議) https://docs.google.com/document/d/17tq0xyXnsWA0VQaJ-5JvY8Y1z8G_z4M36sAbuUhIhy4/edit?usp=sharing – NoobNinja 2013-03-19 03:01:26

+0

這是非常奇怪的。我不知道爲什麼,但所有項目上菜單將我帶到AddEditCountry.class – NoobNinja 2013-03-19 03:06:55

+0

任何人都有任何想法爲什麼它加載不正確的活動? (即使在執行上面的建議?) – NoobNinja 2013-03-19 03:19:59

0

調用該方法的setContentView()在你的onCreate()方法... 我guesss其缺少從那裏...... 嘗試,如果它的工作原理

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
conListView=getListView(); 
conListView.setOnItemClickListener(viewConListener); 

//like this 
setcontentview(R.layout.yourlayout); 

String[] from = new String[] { "name" }; 
int[] to = new int[] { R.id.countryTextView }; 
conAdapter = new SimpleCursorAdapter(CountryList.this, R.layout.country_list, null, from, to); 
setListAdapter(conAdapter); // set adapter 
} 
+0

你能告訴我一個如何做到這一點的例子嗎? – NoobNinja 2013-03-19 03:16:25

+0

我使用上面的方法更新它 - 幫助仍然不會加載活動Tap.class https://docs.google.com/document/d/1uMbz1baxUqHmZWZiSDpwXutdw9tZxK35beqffZ_Q1LY/edit?usp=sharing – NoobNinja 2013-03-19 03:58:31

+0

@ user2163126發表您的country_menu.xml那是你問題出在哪裏,而不是你的代碼在這裏 – ElefantPhace 2013-03-19 04:11:22