2010-08-27 3 views
0

При нажатии на пункт меню я преподносят следующее сообщение в DDMS:onMenuItemSelected никогда не выполняет

окно уже целенаправленный, игнорируя усиление фокусировки: com.android.internal.view.IInputMethodClient $ Stub $ Proxy @ 43882778

Здесь вы найдете большинство кода из основного класса, где onMenuClick игнорируется.


public class Main extends TabActivity { 

public static final int ACTIVITY_CREATE = 0; 

private static final int ADD_ID = Menu.FIRST; 

private Long listId; 
private DbHelper mDbHelper; 
private Cursor mCursor; 

/** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // Set the list id 
     Bundle extras = getIntent().getExtras(); 
     if (extras != null) { 
     listId = extras.getLong("listId"); 
     } 

     // Open the database 
     mDbHelper = new DbHelper(this); 
     mDbHelper.open(); 

     // Setup the tabs 
     createTabs(); 
    } 

    public void createTabs() { 
    mCursor = mDbHelper.fetchAllCategories(listId); 
    startManagingCursor(mCursor); 

    for (int i = 0; i [less than symbol] mCursor.getCount(); i++) 
    { 
     createTab(
    mCursor.getLong(mCursor.getColumnIndexOrThrow("_id")), 
    mCursor.getString(mCursor.getColumnIndexOrThrow("category"))); 
    } 
    } 

    public void createTab(Long categoryId, String category) { 
     TabHost tabHost = getTabHost(); 
     TabHost.TabSpec spec; 
     Intent intent; 

     intent = new Intent(); 
     intent.putExtra("Test", category); 
     intent.setClass(this, Categories.class); 
    spec = tabHost.newTabSpec(category); 
    spec.setContent(intent); 
    spec.setIndicator(category); 
    tabHost.addTab(spec);  
    } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    menu.add(0, ADD_ID, 0, R.string.menu_addCategory).setIcon(R.drawable.add_grey); 
    return true; 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 
    switch (item.getItemId()) { 
    case ADD_ID: 
    addCategory(); 
    return true; 
    } 

    return super.onMenuItemSelected(featureId, item); 
} 

public void addCategory() { 
    Intent intent = new Intent(); 
    intent.setClass(this, CategoryEdit.class); 
    startActivityForResult(intent, ACTIVITY_CREATE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    super.onActivityResult(requestCode, resultCode, intent); 

    switch (requestCode) { 
    case ACTIVITY_CREATE: 
    if (resultCode == RESULT_OK) { 
    Bundle createExtras = intent.getExtras(); 
    mDbHelper.addCategory(createExtras.getString("category")); 

    } 
    } 
} 
} 

Первоначально мой класс CategoryEdit.class не указан в файле AndroidManifest.xml. Я добавил это в манифест и все еще получаю ту же ошибку.

ответ

2

использование ::

public boolean onOptionsItemSelected(MenuItem item) { 

вместо ::

public boolean onMenuItemSelected(int featureId, MenuItem item) { 
+0

Вот и все! Большое спасибо. Я не уверен, какая разница между onOptionsItemSelected или onMenuItemSelected, но я собираюсь провести некоторое исследование и узнать. Еще раз спасибо за вашу помощь. – alockrem

0

Попробуйте изменить его intent.setClass(TabActivity.this, CategoryEdit.class);

Если это не работает, мне нужно немного больше выход из LogCat, вы можете одну линию, и это действительно помогает много.

+0

Спасибо за вашу помощь. Я попробовал это, но это не решило проблему. Предложение onOptionsItemSelected сработало. – alockrem

Смежные вопросы