2015-01-28 1 views
0

ive에는 옵션 메뉴로 2 가지 활동이 있습니다. 옵션 메뉴는 4 개의 메뉴 항목으로 구성됩니다. 그 중 3 개 (option1, option2 및 option3)가 두 옵션 메뉴에 있습니다. 옵션 메뉴는 네 번째 메뉴 항목 (activity1의 option4와 activity2의 option5)을 구분합니다.하나의 구별 메뉴 항목이있는 동일한 옵션 메뉴 2 개를 처리하는 방법

안드로이드에는 optionMenuHelper 클래스와 같은 3 개의 동일한 옵션을 아웃소싱 할 수있는 기회가 있으며, 2 개의 액티비티에서 액세스하여 onOptionsItemSelected (MenuItem)에서 정확하게 동일한 메소드를 2 번 구현해야하지 않습니까? 조언에

감사

자갈


1 업데이트

예 :

내가 exportAsCSV을 (아웃소싱 할) 그래서 난 내 두 활동에 액세스 할 수 있습니다

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 

    switch (item.getItemId()) { 

     case ... 

     case R.id.om_export: 
      exportAsCSV();     
      return true; 
     case ... 
    } 
    return super.onOptionsItemSelected(item); 
} 

및 exportAsCSV에는 getContentResolver를 통해 콘텐츠 공급자로부터 데이터를 가져 오는 커서가 포함됩니다. 그리고 컨텐트 리졸버는 정적 캔트 :/

private void exportAsCSV() { 

    ... 

    Cursor cursor = getContentResolver().query(MyQueries.CONTENT_URI_ALL, 
      new String[]{Column1, Column2}, 
      "", null, Column1); 

    .... 
} 

2 업데이트

좋아 나는 그것을 해결 :

public class MenuHelper { 

    Context context; 

    public ExportHelper(Context con) { 
     context=con; 
    } 


    public void exportAsCSV() { 

    ... 

    Cursor cursor = context.getContentResolver().query(MyQueries.CONTENT_URI_ALL, 
     new String[]{Column1, Column2}, 
     "", null, Column1); 

    ... 

    } 
} 

그럼이 방법 밤은 정적 (무엇 내 의도)하지만 작업을 .

) (유 해결 방법 정적에 알려 그렇게 알고있는 경우) 지금은

어쨌든

을 주셔서 감사합니다 ... 내가 객체를 생성하여 원하는 모든 활동에서 액세스 할 수 있습니다

인사말

답변

0

나는 상용어 코드를 갖고 싶지 않다는 것을 제외하고는 실제로 그 이점을 보지 못했다. menu.xml의 인플레이션을 수행하는 정적 도우미 메서드를 작성할 수 있습니다.

하나의 menu.xml을 작성하고 표시 할 두 가지 활동 중 onCreateOptionsMenu()을 결정합니다. 그렇게 많은 코드가 아닙니다. 이 같은 예를 들어

@Override 
public void onCreateOptionsMenu (Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.shared_menu, menu); 

    MenuItem item5 = menu.findItem(R.id.item_5); 

    // hide in activity 2 
    if(item5 != null) 
     item5.setVisible(false); 

    // static helper call 
    MenuHelper.initActiviyMenu(this, menu, inflater); 
} 

... 

public class MenuHelper { 
    public static void initActivity(Activity activity, Menu menu, MenuInflater inflater){ 
     inflater.inflate(R.menu.shared_menu, menu); 

     if(activity instanceof ActivityA){ 
      // do stuff, hide items, content provider 
     } 
     if(activity instanceof ActivityB){ 
      // do stuff, hide items, content provider 
     } 
    } 


} 
+0

아이 ... 감사합니다 :)이 공개 설정에 대해 생각하지 않았다 -하지만 어떻게 내가 정적 도우미 메도 쓰기 않습니다 (- 방법 모두의 onCreateOptionsMenu()에서 내가 할 수있는 이십 기가 바이트)? 거기에 getContentResolver()를 사용하는 커서가 있는데 정적 일 수 없습니다./ – pebbles

+0

정적 도우미에 대한 예제가 추가되었습니다. 이런 식으로 할 수도 있고 콘텐츠를 처리 할 수도 있습니다. 활동을 컨텍스트로 전달해야합니다. – JimmyVanBraun

+0

고마워, 나는 그것을 시도하고 피드백을 줄 것이다 :) – pebbles