2013-10-21 10 views
8

यहां मेरे ऐप के बारे में थोड़ी सी जानकारी दी गई है। मेरे पास Fragments और ViewPager का उपयोग करके एक टैब लेआउट है। तीसरे टैब पर, मेरे पास Google मानचित्र V2 है। अब, जब भी ऐप का उपयोगकर्ता एक निश्चित स्थलचिह्न में होगा, तो वह फेसबुक पर उस लैंडमार्क के बारे में विवरण साझा कर सकता है। मैंने नक्शा सफलतापूर्वक बनाया है, लेकिन स्थलों के बारे में विवरण अभी तक किया जाना बाकी है। अब फेसबुक के "शेयर" फ़ंक्शन के बारे में, मैंने facebook developers पर दिए गए चरणों का पालन किया है। जब मैं अनुप्रयोग चलाने, मैं त्रुटि मिलती है:मैनिफेस्ट में फेसबुक ऐप की एप्लिकेशन आईडी पर त्रुटि

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

और खोज करने के बाद, मुझे पता चला कि मैं manifest.xml पर आवेदन आईडी डाल की जरूरत है।

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

पूरे फेसबुक शेयर संवाद एक Fragment में स्थित है:

<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 

    } 
}; 

}

यहाँ है मेरी logcat.

उत्तर

25

आप सीधे प्रकट ही में AppID नहीं डाल सकते हैं, आपको मनीफ में एक स्ट्रिंग संसाधन का संदर्भ देने की आवश्यकता है सेंट। कुछ की तरह:

अपने AndroidManifest में:

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

अपना strings.xml में

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

है कि वास्तव में हो सकता है नहीं करना चाहिए:

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

नोट से परिवर्तन एंड्रॉइड: एंड्रॉइड के लिए मूल्य: संसाधन।

+1

मैं स्टीव की टिप्पणी पर जोर देना चाहता हूं। आपने मुझे एक समस्या स्टीव के घास के ढेर में एक सुई बचाई। धन्यवाद – 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

संबंधित मुद्दे