2015-01-07 3 views
0

내 ActionBar에 새로 고침 버튼을 추가했는데, 사실 내 ActionBar에 항상 새로 고침 버튼이 있습니다. 내가 만들 필요가 있음을 heared 한ActionBar 새로 고침 버튼

다음

의 나는 아이콘 추가 여기서

<item android:id="@+id/ofertasRefresh" 
    android:icon="@drawable/ic_action_refresh" 
    android:title="Refresh" 
    android:alphabeticShortcut="r" 
    android:orderInCategory="1" 
    android:showAsAction="always" /> 

그리고 내 활동에 코드의 양을 추가 한을 :

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    this.optionsMenu = menu; 
    MenuInflater inflater = getMenuInflater(); //ERROR<----------- 
    inflater.inflate(R.menu.main, menu); 
    return super.onCreateOptionsMenu(menu); // in Fragment cannot be applied <------------ 
} 
@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.airport_menuRefresh: 

      // Complete with your code 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
public void setRefreshActionButtonState(final boolean refreshing) { 
    if (optionsMenu != null) { 
     final MenuItem refreshItem = optionsMenu 
       .findItem(R.id.ofertasRefresh); 
     if (refreshItem != null) { 
      if (refreshing) { 
       refreshItem.setActionView(R.layout.actionbar_indeterminate_progress); 
      } else { 
       refreshItem.setActionView(null); 
      } 
     } 
    } 
} 

getMenuInflater()은 "Cannont가 방법을 해결하고" "단편은 적용 할 수 없다"는 "나타납니다"라고 말합니다 ...

EDITED *

나는 내 문제가 MyActivity.java에 초점을 맞춘 것을 나는 내가 OnCreateOptionsMenu의 가지고 onOptionsItemSelected

MyActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // toggle nav drawer on selecting action bar app icon/title 
    if (mDrawerToggle.onOptionsItemSelected(item)) { 
     return true; 
    } 
    // Handle action bar actions click 
    switch (item.getItemId()) { 
    case R.id.action_settings: 
     return true; 
    default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

어떤 생각이 문제를 해결하기 위해 코드를 붙여 생각?

+0

아마도 가져올 때 supportMenuInflater를 사용하고있을 것입니다. 그리고 당신은 슈퍼를 돌려 보내면 안됩니다. – togikan

+0

나는 그것을 대체하고 "getMenuInflater"는 어떨까요? –

+0

어디에서'getMenuInflater'를 호출할까요? 조각에서? –

답변

2

당신이 활동에서 전화하는 경우는 onCreateOptionsMenu 방법 메뉴를 팽창

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    //this.optionsMenu = menu; 
    //MenuInflater inflater = getMenuInflater(); //ERROR<----------- 
    getMenuInflater().inflate(R.menu.main, menu); 
    //return super.onCreateOptionsMenu(menu); // in Fragment cannot be applied <------------ 
    return true; 
} 

를 사용합니다.

덧글에 의하면 같은 방법으로 true을 반환한다고합니다.

방법이 약간 다를 것이다 조각에서 전화하는 경우 :

@Override 
    public void onCreateOptionsMenu(
     Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.main, menu); 
    } 
+0

내가 이것을 할 수 있다는 것을 의미합니까? 'MenuInflater inflater = getMenuInflater(). inflate (R.menu.main, menu);', 작동하지 않습니다 .. 여전히 메서드를 해결할 수 없다고 말하고 있습니다. –

+0

나는 모든 것을 포함하는 답을 편집했습니다. 명확 해. 귀하의 "나쁜"라인은 깎여 있습니다. –

+0

글쎄 .. 이제는 아무 것도 잘못 말하지는 않았지만, 여전히 모든 활동에 대해 보여주고 있습니다. 단지 하나의 액티비티에 표시하고 싶지 만, 영구적으로 ActionBar에는 표시하지 않으려합니다. –

1

이처럼 사용

MainActivity.java :

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) 
    { 
     switch (item.getItemId()) 
     { 
     case R.id.search: // it is going to refer the search id name in main.xml 

     //add your code here 

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

main.xml에 :

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" > 

    <item 
     android:id="@+id/search" 
     android:icon="@drawable/ic_action_settings" --> add a icon in drawable that will display in the top of the action bar. 
     android:title="@string/search" 
     android:showAsAction="always"/> 

</menu> 

위의 코드를 사용하면 작업 모음 상단에 하나의 메뉴 항목이 표시됩니다. 코드를 추가하면 기능을 수행 할 case R.id.search: 안에 추가됩니다.

+0

코드가하는 일에 대해 더 많이 설명해 주시겠습니까? –

+0

@JoanColmenero 내 편집 된 게시물을 확인하십시오. 질문이 있으시면 알려주세요 .. – Steve