2013-10-21 4 views
8

ここに私のアプリについて少し詳しく説明します。私はFragmentsViewPagerを使用してタブレイアウトを持っています。 3番目のタブには、GoogleマップV2があります。今では、アプリのユーザーが特定のランドマークにあるときはいつでも、彼はそのランドマークについての詳細をFacebook上で共有することができます。私はマップを作成することに成功しましたが、ランドマークについての詳細はまだ完成していません。今facebookの "共有"機能について、私はfacebook developersの手順に従っています。私はアプリを実行すると、私はエラーを取得:マニフェストのfacebookアプリのアプリケーションIDにエラーがあります

10-17 14:19:06.856: E/AndroidRuntime(2180): java.lang.NullPointerException: Argument 'applicationId' cannot be null 

と検索した後に、私はmanifest.xml上のアプリケーションIDを配置する必要があることが分かりました。全体のFacebookのシェアダイアログがFragmentに位置しています

10-17 14:44:03.076: E/AndroidRuntime(2240): java.lang.NullPointerException: Argument 'applicationId' cannot be null 

<meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="the key from google api console" 

     /> 
    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="the key from fb devs" 

     /> 

しかし、私はまだエラーを取得:

は、ここに私のメタデータです。

ここでは、次のとおりです。

TabFour.java

public class TabFour extends Fragment { 
private UiLifecycleHelper uiHelper; 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.activity_tab_four, container, false); 

    return rootView; 
} 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    uiHelper = new UiLifecycleHelper(getActivity(), callback); 
    uiHelper.onCreate(savedInstanceState); 

    OpenGraphAction action = GraphObject.Factory.create(OpenGraphAction.class); 
    action.setProperty("book", "https://example.com/book/Snow-Crash.html"); 

    @SuppressWarnings("deprecation") 
    FacebookDialog shareDialog = new FacebookDialog.OpenGraphActionDialogBuilder(getActivity(), action, "books.reads", "book") 
      .build(); 
    uiHelper.trackPendingDialogCall(shareDialog.present()); 
} 


@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    uiHelper.onActivityResult(requestCode, resultCode, data, new FacebookDialog.Callback() { 
     @Override 
     public void onError(FacebookDialog.PendingCall pendingCall, Exception error, Bundle data) { 
      Log.e("Activity", String.format("Error: %s", error.toString())); 
     } 

     @Override 
     public void onComplete(FacebookDialog.PendingCall pendingCall, Bundle data) { 
      Log.i("Activity", "Success!"); 
     } 
    }); 
} 



@Override 
public void onResume() { 
    super.onResume(); 
    uiHelper.onResume(); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    uiHelper.onSaveInstanceState(outState); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    uiHelper.onPause(); 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    uiHelper.onDestroy(); 
} 
private Session.StatusCallback callback = new Session.StatusCallback() { 


    @Override 
    public void call(Session session, SessionState state, 
      Exception exception) { 
     // TODO Auto-generated method stub 

    } 
}; 

}

ここでは、マニフェスト自体に直接appIDがを置くことができない私のlogcat.

答えて

25

あり、あなたはmanifeの文字列リソースを参照する必要がありますst。何かのように:あなたのAndroidManifestで

:あなたのstrings.xmlで

<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/app_id"/> 

<resources> 
    ... 
    <string name="app_id">$app_id_here</string> 
</resources> 
2

は、実際にすべきではありません:

<meta-data android:name="com.facebook.sdk.ApplicationId" android:resource="@string/app_id"/> 

注意の変化からandroid:value to android:リソース。

+1

私はSteveのコメントを強調したいと思います。あなたは問題のSteveの乾草のスタックに私を針で救った。ありがとう – kuruppsify

4

メタデータ要素をアプリケーションタグ内に貼り付ける必要があることに注意してください。

この方法:

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <meta-data android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/facebook_app_id"/> 
</application> 

あなたはどこか別の場所に貼り付けた場合は、このエラーを取得し続けます。

+2

ありがとう、私のエラーは、あなたは私の日を救った! :) – luiswill

関連する問題