简体   繁体   English

setContentView(R.layout.activity_main) 上的异常;

[英]Exception on setContentView(R.layout.activity_main);

so I'm getting an exception on my Android App, that I have no idea where comes from.所以我的 Android 应用程序出现异常,我不知道从哪里来。 And yes my code is a complete mess now from trying to fix it.是的,我的代码现在由于试图修复它而一团糟。

Somehow my setcontentview is pointing somewhere null, but I have really no idea where and why.不知何故,我的 setcontentview 指向某个地方,但我真的不知道在哪里以及为什么。

MainActivity.java主活动.java

package com.example.nan.spymap;

import android.app.ActionBar;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginManager;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import com.parse.LogInCallback;
import com.parse.Parse;
import com.parse.ParseFacebookUtils;
import com.parse.ParseUser;
import com.parse.SaveCallback;
import com.parse.SignUpCallback;

import java.text.ParseException;

public class MainActivity extends FragmentActivity {

    private CallbackManager callbackManager;

    private TextView info;
    private LoginButton loginButton;
    Button mActionButton;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Parse.initialize(this, "KEY", "KEY");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //final ParseUser user = new ParseUser();
        //user.setUsername("my name");
       //user.setPassword("my pass");
        //user.setEmail("email@example.com");

// other fields can be set just like with ParseObject
       // user.put("phone", "650-555-0000");
/**
 *

        user.signUpInBackground(new SignUpCallback() {
            @Override
            public void done(com.parse.ParseException e) {
                if (e == null) {
                    // Hooray! Let them use the app now.
                } else {
                    // Sign up didn't succeed. Look at the ParseException
                    // to figure out what went wrong
                }
            }
        });
 */


        ParseFacebookUtils.initialize(this);
        FacebookSdk.sdkInitialize(getApplicationContext());
        callbackManager = CallbackManager.Factory.create();


        info = (TextView)findViewById(R.id.info);
        loginButton = (LoginButton)findViewById(R.id.login_button);

        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {

            @Override
            public void onSuccess(LoginResult loginResult) {
                startActivity(new Intent(MainActivity.this, MapActivity.class));
                Profile profile = Profile.getCurrentProfile();
                Log.d("facebook id",profile.getId());
                Log.d("facebook name", profile.getFirstName());

            }

            @Override
            public void onCancel() {
                info.setText("Login attempt cancelled.");
            }

            @Override
            public void onError(FacebookException e) {
                info.setText("Login attempt failed.");
            }

        });

        mActionButton = (Button) findViewById(R.id.Sbutton);
        mActionButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                startActivity(new Intent(MainActivity.this, SignupActivity.class));

            }
        });
        View decorView = getWindow().getDecorView();
// Hide the status bar.
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        decorView.setSystemUiVisibility(uiOptions);
// Remember that you should never show the action bar if the
// status bar is hidden, so hide that too if necessary.

        ActionBar actionBar = getActionBar();
        actionBar.hide();

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        callbackManager.onActivityResult(requestCode, resultCode, data);
        super.onActivityResult(requestCode, resultCode, data);
       ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
    }

}

My main activity xml我的主要活动xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent"
    android:padding="16dp"
    android:id="@+id/spymap"
    android:background="#79dbff">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/info"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:textSize="18sp"
        />

    <com.facebook.login.widget.LoginButton
        android:id="@+id/login_button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Sign Up"
        android:id="@+id/Sbutton"
        android:layout_marginTop="40dp"
        android:layout_below="@+id/login_button"
        android:layout_centerHorizontal="true" />
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="Get stalked"
        android:id="@+id/textView"
        android:layout_above="@+id/login_button"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="68dp" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="Don't worry, totally not gonna steal your data"
        android:id="@+id/textView2"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="47dp" />

</RelativeLayout>

and the errors;和错误;

09-23 12:18:11.289  13106-13106/? E/AndroidRuntime﹕ FATAL EXCEPTION: main
    Process: com.example.nan.spymap, PID: 13106
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nan.spymap/com.example.nan.spymap.MainActivity}: android.view.InflateException: Binary XML file line #17: Error inflating class com.facebook.login.widget.LoginButton
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: android.view.InflateException: Binary XML file line #17: Error inflating class com.facebook.login.widget.LoginButton
            at android.view.LayoutInflater.createView(LayoutInflater.java:633)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.example.nan.spymap.MainActivity.onCreate(MainActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: java.lang.reflect.InvocationTargetException
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.example.nan.spymap.MainActivity.onCreate(MainActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
     Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.
            at com.facebook.internal.Validate.sdkInitialized(Validate.java:136)
            at com.facebook.AccessTokenTracker.<init>(AccessTokenTracker.java:55)
            at com.facebook.login.widget.LoginButton$2.<init>(LoginButton.java:561)
            at com.facebook.login.widget.LoginButton.configureButton(LoginButton.java:561)
            at com.facebook.FacebookButtonBase.<init>(FacebookButtonBase.java:66)
            at com.facebook.login.widget.LoginButton.<init>(LoginButton.java:200)
            at java.lang.reflect.Constructor.newInstance(Native Method)
            at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
            at android.view.LayoutInflater.createView(LayoutInflater.java:607)
            at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
            at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
            at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
            at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:378)
            at android.app.Activity.setContentView(Activity.java:2145)
            at com.example.nan.spymap.MainActivity.onCreate(MainActivity.java:45)
            at android.app.Activity.performCreate(Activity.java:5990)
            at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
            at android.app.ActivityThread.access$800(ActivityThread.java:151)
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
            at android.os.Handler.dispatchMessage(Handler.java:102)
            at android.os.Looper.loop(Looper.java:135)
            at android.app.ActivityThread.main(ActivityThread.java:5254)
            at java.lang.reflect.Method.invoke(Native Method)
            at java.lang.reflect.Method.invoke(Method.java:372)
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Put following line:放置以下行:

FacebookSdk.sdkInitialize(getApplicationContext()); 

this before setContentView()这在 setContentView() 之前

I edited the oncreate to this;我将 oncreate 编辑为此;

@Override
    protected void onCreate(Bundle savedInstanceState) {

        FacebookSdk.sdkInitialize(this);
        Parse.initialize(this, "KEY", "KEY");
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ParseFacebookUtils.initialize(this);

And it works now..它现在有效..

The stack trace is pretty clear:堆栈跟踪非常清楚:

Caused by: The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

you need to call你需要打电话

FacebookSdk.sdkInitialize(getApplicationContext());

before

setContentView(R.layout.activity_main);

Your stack trace states您的堆栈跟踪状态

The SDK has not been initialized, make sure to call FacebookSdk.sdkInitialize() first.

See the documentation for FacebookSdk :请参阅FacebookSdk的文档:

This function initializes the Facebook SDK, the behavior of Facebook SDK functions are undetermined if this function is not called.该函数初始化 Facebook SDK,如果不调用该函数,则 Facebook SDK 函数的行为是不确定的。 It should be called as early as possible.应该尽早调用它。

So just move the relevant initialization up所以只需将相关的初始化上移

@Override
protected void onCreate(Bundle savedInstanceState) {
    Parse.initialize(this, "KEY", "KEY");
    ParseFacebookUtils.initialize(this);
    FacebookSdk.sdkInitialize(getApplicationContext());
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    [...]
 }

Your printstacktrace clearly states that Error inflating class com.facebook.login.widget.LoginButton您的 printstacktrace 清楚地指出Error inflating class com.facebook.login.widget.LoginButton

You are using a custom widget com.facebook.login.widget.LoginButton go through its documentation and check your inflate您正在使用自定义小部件com.facebook.login.widget.LoginButton查看其文档并检查您的充气

check this question检查这个问题

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 错误 setContentView(R.layout.activity_main) - error setContentView(R.layout.activity_main) setContentView(R.layout.activity_main)vs getMenuInflater()。inflate(R.menu.activity_main,menu) - setContentView(R.layout.activity_main) vs getMenuInflater().inflate(R.menu.activity_main, menu) 如何修复程序包R不存在setContentView(R.layout.activity_main)及其后果? - How to fix package R does not exist setContentView(R.layout.activity_main) and it consequences? 调用 setContentView(R.layout.activity_main); 时应用程序崩溃; 第二次 - App crashing when calling setContentView(R.layout.activity_main); for the second time R.layout.activity_main,NoClassDefFound错误 - R.layout.activity_main, NoClassDefFound error 为什么 setContentView(R.layout.activity_main) 和 findViewById(R.id.example) 不使用点符号来引用 object? - Why do setContentView(R.layout.activity_main) and findViewById(R.id.example) not use dot notation to reference an object? 如何在单击按钮时将contentview设置为R.layout.activity_main - How to set contentview as R.layout.activity_main on button click android开发中R.layout.activity_main的含义(JAVA语言) - Meaning of R.layout.activity_main in android development (JAVA language) 在main activity.java中找不到R.layout.activity_main - Cannot find R.layout.activity_main in main activity.java 的setContentView(R.layout.main); 错误 - setContentView(R.layout.main); error
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM