2013-08-23 59 views
-1

我有一个ImageView里面的xml布局。 ImageView有一个onClick方法。模拟onOptionsItemSelected里面的方法调用

android:onClick="onHomeClicked" 

当用户点击我的形象,我想,要依次调用onOptionsItemSelected活动中。我会怎么做?

下面的代码提供空值homeMenuItem

MenuItem homeMenuItem; 

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
    homeMenuItem = menu.findItem(android.R.id.home); 
    super.onPrepareOptionsMenu(menu); 
    return true; 
} 

public void onHomeClicked(View view) { 
    onOptionsItemSelected(homeMenuItem); 
} 

回答

1

你没有MenuItem,任何逻辑onOptionsItemSelected()将包含会失败(假设有多个选项)。

由于您似乎需要共享代码,因此将该逻辑移至其自己的方法,然后从onHomeClicked()onOptionsItemSelected()中调用该方法。

private void mySharedMethod(){ 
//implementation 
} 

public void onHomeClicked (View v){ 
    mySharedMethod(); 
} 

public boolean onOptionsItemSelected (MenuItem item){ 
    switch (item.getItemId()){ 
    case android.R.id.home: 
     mySharedMethod(); 
     return true; 
    default: 
     return super.onOptionsItemSelected (item); 
    } 
} 
0

可能必须声明的方法和onOptionsItemSelectedonHomeClicked

onOptionsItemSelected(MenuItem item){ 
     switch(item.getItemId()) { 
     case R.id.btn: 
      youNewMethod(); 
     break; 
     } 
    } 

    public void onHomeClicked() { 
     youNewMethod(); 
    } 

    private void youNewMethod(){ 
     // write your code here 
    } 
叫它