2015-01-19 2 views
0

안녕하세요 여러분, 아래 코드가 실행되고 있습니다. 내가 setShareIntent(); 문을하지만 내가 그것을 주석을 때 응용 프로그램이 충돌! 누구든지 코드를 살펴보고 내가 오랫동안 솔루션을 찾기 위해 노력해 왔던 것처럼 실수를 바로 잡을 수 있도록 도와 주시겠습니까? 미리 감사드립니다.액션 공유 제공자 (java.lang.NullPointerException)

<item 
    android:id="@+id/action_share" 
    android:orderInCategory="100" 
    android:title="FS7" 
    android:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
    app:showAsAction="ifRoom"/> 

수입 :

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.MenuItemCompat; 
import android.support.v7.app.ActionBarActivity; 
import android.support.v7.widget.ShareActionProvider; 
import android.view.Menu; 
import android.view.MenuItem; 

자바 :

public class MainActivity extends ActionBarActivity { 

private ShareActionProvider mShareActionProvider; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

@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); 

    MenuItem item = menu.findItem(R.id.action_share); 
    mShareActionProvider = (ShareActionProvider) MenuItemCompat 
      .getActionProvider(item); 
    mShareActionProvider.setShareIntent(getDefaultSharedPreferences()); 

    return super.onCreateOptionsMenu(menu); 
} 

private Intent getDefaultSharedPreferences() { 

    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("text/plain"); 
    i.putExtra(Intent.EXTRA_TEXT, "FS7"); 
    i.putExtra(Intent.EXTRA_TEXT, "Download my free application from URL..."); 
    return i; 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 
    if (id == R.id.action_settings) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
} 

로그 캣 :

01-19 02:42:48.602: E/AndroidRuntime(2546): FATAL EXCEPTION: main 
01-19 02:42:48.602: E/AndroidRuntime(2546): Process:  com.example.shareaction, PID: 2546 
01-19 02:42:48.602: E/AndroidRuntime(2546): java.lang.NullPointerException 
01-19 02:42:48.602:E/AndroidRuntime(2546):atcom.example.shareaction.MainActivity.onCreateOptionsMenu(MainActivity.java:30) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.app.Activity.onCreatePanelMenu(Activity.java:2538) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v4.app.FragmentActivity.onCreatePanelMenu(FragmentActivity.java:275) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v7.app.ActionBarActivity.superOnCreatePanelMenu(ActionBarActivity.java:276) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v7.app.ActionBarActivityDelegate$1.onCreatePanelMenu(ActionBarActivityDelegate.java:79) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v7.app.ActionBarActivityDelegateBase.preparePanel(ActionBarActivityDelegateBase.java:1056) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v7.app.ActionBarActivityDelegateBase.doInvalidatePanelMenu(ActionBarActivityDelegateBase.java:1259) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v7.app.ActionBarActivityDelegateBase.access$100(ActionBarActivityDelegateBase.java:80) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.support.v7.app.ActionBarActivityDelegateBase$1.run(ActionBarActivityDelegateBase.java:119) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.os.Handler.handleCallback(Handler.java:733) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.os.Handler.dispatchMessage(Handler.java:95) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.os.Looper.loop(Looper.java:136) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at java.lang.reflect.Method.invoke(Method.java:515) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
01-19 02:42:48.602: E/AndroidRuntime(2546):  at dalvik.system.NativeStart.main(Native Method) 

메뉴/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" 
tools:context="com.example.shareaction.MainActivity" > 

<item 
    android:id="@+id/action_settings" 
    android:orderInCategory="100" 
    android:title="@string/action_settings" 
    app:showAsAction="never"/> 

<item 
    android:id="@+id/action_share" 
    android:orderInCategory="100" 
    android:title="FS7" 
    android:actionProviderClass="android.support.v7.widget.ShareActionProvider" 
    app:showAsAction="ifRoom"/> 
</menu> 
+0

코드가 올바르게 표시됩니다. 전체 메뉴 코드를 추가 할 수 있습니다. main.xml – Ramz

+0

@Ramz main.xml 파일을 업로드했습니다. – Sid

+0

@Ramz 답장을 보내 주셔서 감사합니다. – Sid

답변

1

대신 사용 android:actionProviderClassapp:actionProviderClass. 후자는 API 레벨 14에서만 소개되었으며 지원 라이브러리는 자체 속성을 필요로합니다.

+0

고맙습니다. – Sid

+0

이 작품은 잘 작동합니다 ... –