2016-03-22 19 views
0

Temel facebook aktivty geliştirmeye çalışıyorum ve uygulama kullanıcı adı ve ekranda görüntüleyecektir ama ben bir tür FATAL EXCEPTION karşı karşıyayım: ana hata tam set benim sağladık Bildiri dosyasının, sınıf dosyası, xml dosyası ve Logcat hata ile başlayan kodlar, yardımın oldukça aşağıda verilen kod aşağıdaki kod benim bildirim dosyaandroid stüdyosu facebook etkinliği ile hata

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.world.trialwithmugaputhagam"> 

<uses-permission android:name="android.permission.INTERNET" /> 

<application 
    android:name=".MyApplicatioon" 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <meta-data 
     android:name="com.facebook.sdk.ApplicationId" 
     android:value="@string/app_id" /> 

    <activity android:name=".MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.facebook.FacebookActivity" 
     android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 
    <activity android:name=".MainFragment" /> 
</application> 

olduğunu

gereklidir Ben kodunun altına sınıf dosyası yetkilendirme yalnızca var olan ben de mTextDetails atamış ama imlecini o değeri aşağıdaki kod benim XML dosya

olduğunu

import android.os.Bundle; 
import android.app.Fragment; 
import android.content.Intent; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import com.facebook.AccessToken; 
import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.Profile; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 

public class MainActivity extends Fragment { 

private TextView mTextDetails; 
private CallbackManager mcallbackManager; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    FacebookSdk.sdkInitialize(getActivity().getApplicationContext()); 
    mcallbackManager=CallbackManager.Factory.create(); 
} 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.activity_main,container,false); 
} 


private FacebookCallback<LoginResult> mcallback = new FacebookCallback<LoginResult>() { 
    @Override 
    public void onSuccess(LoginResult loginResult) { 
     AccessToken accessToken = loginResult.getAccessToken(); 
     Profile profile = Profile.getCurrentProfile(); 
     if (profile != null){ 
      mTextDetails.setText("Welcome "+ profile.getName()); 
     } 
    } 

    @Override 
    public void onCancel() { 

    } 

    @Override 
    public void onError(FacebookException error) { 

    } 
}; 



@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    LoginButton loginButton = (LoginButton) view.findViewById(R.id.login_button); 
    loginButton. setReadPermissions("user_friends"); 
    loginButton. setFragment(this); 
    loginButton.registerCallback(mcallbackManager, mcallback); 
} 

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

atanmamış söylemek

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.world.trialwithmugaputhagam.MainActivity"> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/Welcome" 
    android:id="@+id/text_details" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:layout_above="@+id/login_button"/> 

<com.facebook.login.widget.LoginButton 
    android:id="@+id/login_button" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:layout_marginTop="30dp" 
    android:layout_marginBottom="30dp" 
    android:layout_centerInParent="true"/></RelativeLayout> 

Logcat hata yanlış hizalama için üzgünüm.

FATAL EXCEPTION: main 
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.world.trialwithmugaputhagam/com.example.world.trialwithmugaputhagam.MainActivity}: java.lang.ClassCastException: com.example.world.trialwithmugaputhagam.MainActivity cannot be cast to android.app.Activity 
                      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261) 
                         at android.app.ActivityThread.access$600(ActivityThread.java:141) 
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
                         at android.os.Handler.dispatchMessage(Handler.java:99) 
                         at android.os.Looper.loop(Looper.java:137) 
                         at android.app.ActivityThread.main(ActivityThread.java:5103) 
                         at java.lang.reflect.Method.invokeNative(Native Method) 
                         at java.lang.reflect.Method.invoke(Method.java:525) 
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
                         at dalvik.system.NativeStart.main(Native Method) 
                        Caused by: java.lang.ClassCastException: com.example.world.trialwithmugaputhagam.MainActivity cannot be cast to android.app.Activity 
                         at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 
                         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128) 
                         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)  
                         at android.app.ActivityThread.access$600(ActivityThread.java:141)  
                         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)  
                         at android.os.Handler.dispatchMessage(Handler.java:99)  
                         at android.os.Looper.loop(Looper.java:137)  
                         at android.app.ActivityThread.main(ActivityThread.java:5103)  
                         at java.lang.reflect.Method.invokeNative(Native Method)  
                         at java.lang.reflect.Method.invoke(Method.java:525)  
                         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)  
                         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)  
                         at dalvik.system.NativeStart.main(Native Method) 
+0

Eğer etkinliğe Fragment döküm olamaz. FragmentActivity, AppCompatActivity veya Activity'ı genişletmeyi deneyin. Aksi halde neden fragmana ihtiyacınız var? –

+0

Olası kopyası http://stackoverflow.com/questions/35988502/android-facebook-get-null-profile/35989033#35989033 –

cevap

0

Eğer Fragment den MainActivity uzanan çünkü. Böylece, MainActivity, aslında bir Activity değil, bir Fragment. Activity veya Activity alt sınıflarını genişletin. Bunun gibi

:

MainActivity extends AppCompatActivity

Düzenleme 1: (açıklamalara dayanarak):

Sen mTextDetails başlatılmış değil; Activity 'ın onCreate böyle yapmaya çalışacağım:

mTextDetails = (TextView)findViewById(R.id.text_view_id);

+0

Evet Denedim ama onCreateView ve onViewCreated deyiminde hata ile birlikte beni bırakıyor "Yöntem yeniden olamaz " – Eggsy

+0

Evet, çünkü bu yöntemler" Etkinlik "değil" Fragman "grubuna ait. Düzeni “Etkinlik” in “onCreate” ı içine yükleyin. –

+0

Hatalarla yanıp sönen kodu kaldırdım ve şimdi program başarıyla çalıştırılıyor ** MainActivity AppCompatActivity ** 'i genişletiyor ama yine de facebook kullanıcı adı – Eggsy

İlgili konular