2014-07-27 4 views
0
07-27 11:29:26.390: E/AndroidRuntime(691): FATAL EXCEPTION: main 
07-27 11:29:26.390: E/AndroidRuntime(691): java.lang.NullPointerException 
07-27 11:29:26.390: E/AndroidRuntime(691): at com.androidma.voteq.MainActivity.onCreateOptionsMenu(MainActivity.java:271) 
07-27 11:29:26.390: E/AndroidRuntime(691): at android.app.Activity.onCreatePanelMenu(Activity.java:2444) 
07-27 11:29:26.390: E/AndroidRuntime(691): at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:225) 
07-27 11:29:26.390: E/AndroidRuntime(691): at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:233) 
07-27 11:29:26.390: E/AndroidRuntime(691): at android.support.v7.app.ActionBarActivityDelegateICS.onCreatePanelMenu(ActionBarActivityDelegateICS.java:146) 
07-27 11:29:26.390: E/AndroidRuntime(691): at android.support.v7.app.ActionBarActivity.onCreatePanelMenu(ActionBarActivity.java:200) 
07-27 11:29:26.390: E/AndroidRuntime(691): at  android.support.v7.app.ActionBarActivityDelegateICS$WindowCallbackWrapper.onCreatePanelMenu (ActionBarActivityDelegateICS.java:293) 
07-27 11:29:26.390: E/AndroidRuntime(691): at com.android.internal.policy.impl.PhoneWindow.preparePanel(PhoneWindow.java:388) 

"공유"작업을 작업 표시 줄에 삽입하려고하면 내 응용 프로그램이 충돌합니다.Android 앱 - 공유 의도 치명적인 오류

public class MainActivity extends ActionBarActivity { 

내 코드 :

import android.support.v7.app.ActionBarActivity; 

내 주요 활동 클래스는 다음과 같이 시작합니다

문제가있는 라인이 클래스 내 수입에이

myShareActionProvider.setShareIntent(myIntent); 

입니다

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); 
     getMenuInflater().inflate(R.menu.action_bar_share_menu, menu); 

     MenuItem item = menu.findItem(R.id.menu_item_share); 



     ShareActionProvider myShareActionProvider = (ShareActionProvider) item.getActionProvider(); 



     Intent myIntent = new Intent(); 
     startActivity(myIntent); 

     myIntent.setAction(Intent.ACTION_SEND); 

     myIntent.putExtra(Intent.EXTRA_TEXT, "Oylamaya Katil! Google vs. Apple! https://play.google.com/store/apps/details?id=com.google.android.gm&hl=tr"); 

     myIntent.setType("text/plain"); 



     myShareActionProvider.setShareIntent(myIntent); 

    return true; 



}  

메뉴 폴더

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 



    <item android:id="@+id/menu_item_share" 

     android:showAsAction="ifRoom" 

     android:title="Share" 

     android:actionProviderClass="android.widget.ShareActionProvider" /> 



</menu> 

행동 마뉘 공유 munu의 XML

<?xml version="1.0" encoding="utf-8"?> 

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 



    <item android:id="@+id/menu_item_share" 

     android:showAsAction="ifRoom" 

     android:title="Share" 

     android:actionProviderClass="android.widget.ShareActionProvider" /> 



</menu> 

내가 그것을 다른 프로젝트에서 실행됩니다 공유 의도 코드 블록을 사용하고있는 main.xml에. 코드의

private ShareActionProvider mShareActionProvider; 
    public boolean onCreateOptionsMenu(Menu menu) { 


     getMenuInflater().inflate(R.menu.action_bar_share_menu, menu); 

     final MenuItem shareItem = menu.findItem(R.id.action_share); 

     mShareActionProvider = (ShareActionProvider)  MenuItemCompat.getActionProvider(shareItem); 



     Intent myIntent = new Intent(); 

     myIntent.setAction(Intent.ACTION_SEND); 

     myIntent.putExtra(Intent.EXTRA_TEXT, "Oylamaya Katil! Google vs. Apple!  https://play.google.com/store/apps/details?id=com.google.android.gm&hl=tr"); 

     myIntent.setType("text/plain"); 



     mShareActionProvider.setShareIntent(myIntent); 







     return true; 



    } 

답변

0

절반이 APPCOMPAT 작업 표시 줄의 백 포트를 사용하고 있습니다 : 내가 시간 동안이 문제를 해결 할 수 coulnd't 은 ...

내 문제를 해결했다. 코드 절반이 기본 API 레벨 11 이상의 액션 바 구현을 사용하고 있습니다. 이것은 작동하지 않습니다. 하나를 골라서 붙잡아 라.

the documentation을 인용 :

이 가이드는 지원 라이브러리의 작업 표시 줄을 사용하는 방법에 초점을 맞추고 있지만, 앱 전용 안드로이드 3.0 이상을 지원하는 경우, 당신은 프레임 워크에서 액션 바 API를 사용합니다. 대부분의 API는 동일하지만 다른 패키지 네임 스페이스에 있지만 메소드 이름이나 서명에 대한 예외는 아래 섹션에 나와 있습니다.

+0

감사합니다. – user1860076