2014-03-07 2 views
0

안녕하세요, 내 MainActivity.java에서이 코드를 설정하여 내 앱에 공유 버튼을 추가했습니다. 액션 바가 이전의 안드로이드 버전에서 잘 작동하지 않는다는 것을 알고 있습니다. Android 2.3을 사용하는 고객 중 한 명은 전화 메뉴 버튼을 누르면 앱이 다운되고 강제 종료됩니다. 버전 3.0에서부터 위의 모든 항목이 정상적으로 진행되면 공유 버튼이 표시됩니다. 이 함수를 추가하기 전에 내가 추가 할 수있는 몇 줄의 코드가 있습니까? 안드로이드 버전이 3.0 이하인 경우 공유 버튼 동작을 사용하지 못하게합니까?ActionBar를 설정 한 후 Android 2.x에서 오류가 발생했습니다.

<item android:id="@+id/action_share" android:title="@string/menu_share" 
     android:icon="@drawable/menu_share" android:showAsAction="ifRoom" 
     android:actionProviderClass="android.widget.ShareActionProvider"></item> 
+0

이 코드를 포맷하십시오 제대로 –

+0

나는 코드 형식의. 끝난! – unarea

답변

0

액션 바는에서 사용할 수 없습니다 :

@Override 

    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main_menu, menu); 
     MenuItem shareItem = (MenuItem) menu.findItem(R.id.action_share); 
     ShareActionProvider mShare = (ShareActionProvider)shareItem.getActionProvider(); 

     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setAction(Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     shareIntent.putExtra(Intent.EXTRA_TEXT, "Download here https://www.apps.com"); 

     mShare.setShareIntent(shareIntent); 
     return true; 
    } 

내 menu.xml 파일은 다음을 (아이콘을 보여줍니다, 작동 확인)했습니다

내가 내 코드에있을 것입니다 안드로이드 2.x의 상자. MenuItem이 API 14 (Android 4.0 Ice Cream Sandwich)에 도입 된 getActionProvider()을 이해하지 못하기 때문에 충돌이 발생합니다.

당신은 두 가지 옵션이 있습니다

  1. 안드로이드의 이전 버전에서 액션 바을 사용하기 위해 v7 appcompat library을 사용합니다;
  2. 또는 기존의 2.x 메뉴를 구현할 수 있습니다.

2.x 장치에서 충돌을 피하기 위해 수행 할 수있는 작업입니다. 장치가 나중에 아이스크림 샌드위치을 실행되는 것을 확인하여 새로운 API를 사용 가드 :

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
     MenuItem shareItem = (MenuItem) menu.findItem(R.id.action_share); 
     ShareActionProvider mShare = (ShareActionProvider)shareItem.getActionProvider(); 

     Intent shareIntent = new Intent(Intent.ACTION_SEND); 
     shareIntent.setAction(Intent.ACTION_SEND); 
     shareIntent.setType("text/plain"); 
     shareIntent.putExtra(Intent.EXTRA_TEXT, "Download here https://www.apps.com"); 

     mShare.setShareIntent(shareIntent); 
    } 
    return true; 
} 
+0

도움을 주셔서 감사합니다. (Build.VERSION.SDK_INT> = Build.VERSION_CODES.ICE_CREAM_SANDWICH)를 추가했지만 이후에 MenuItem shareItem에 오류가 발생했습니다 (빨간색으로 표시됨). 내가 넣으면; after if (Build.VERSION.SDK_INT> = Build.VERSION_CODES.ICE_CREAM_SANDWICH); 오류가 사라졌습니다 – unarea

+0

위의 읽음 – unarea

+0

사과드립니다. if 문 뒤에 "{"(중괄호)를 넣는 것을 잊었습니다. 위의 코드를 수정했습니다. – bolot

관련 문제