Android 运行时和空点异常

标签 android eclipse nullpointerexception runtimeexception

我在一个名为 (ParseInitialization.java) 的类中进行了 Parse 初始化,它扩展了 Application,在运行我的应用程序 (MainActivity.java) 时,我得到了一个 RuntimeException 当我在 (MainActivity.java) 的 onCreate 中调用 Parse.initialize 时,我得到了一个 NullpointException

这是我的代码:

主 Activity .java

package com.example.baharat2;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.view.Menu;
import android.view.MenuInflater;
import com.parse.ParseAnonymousUtils;
import com.parse.ParseUser;

public class MainActivity extends Activity {
private Button signin_btn ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

signin_btn = (Button) findViewById(R.id.button1);
signin_btn.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {

        // TODO Auto-generated method stub      
        // Determine whether the current user is an anonymous user
        if (ParseAnonymousUtils.isLinked(ParseUser.getCurrentUser())) {
            // If user is anonymous, send the user to LoginSignupActivity.class
            Intent intent = new Intent(MainActivity.this,LoginSignupActivity.class);
            startActivity(intent);
            finish();
        } else {
        // If current user is NOT anonymous user
        // Get current user data from Parse.com
        ParseUser currentUser = ParseUser.getCurrentUser();
        if (currentUser != null) {
            // Send logged in users to Welcome.class
            Intent intent = new Intent(MainActivity.this, Welcome.class);
            startActivity(intent);
            finish();
        } else {
            // Send user to LoginSignupActivity.class
            Intent intent = new Intent(MainActivity.this,LoginSignupActivity.class);
            startActivity(intent);
            finish();
    }
  }
 } 
 });
}

 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
 MenuInflater inflater = getMenuInflater();
 inflater.inflate(R.menu.main, menu);
 return super.onCreateOptionsMenu(menu);
 }
}

解析初始化.java

package com.example.baharat2;
import android.app.Application;
import com.parse.Parse;
import com.parse.ParseACL;
import com.parse.ParseObject;
import com.parse.ParseUser;

public class ParseInitialization extends Application {
@Override
public void onCreate() {
    super.onCreate();

    // Add your initialization code here
    Parse.initialize(this, "xxx", "xxx");


    ParseUser.enableAutomaticUser();
    ParseACL defaultACL = new ParseACL();

    // If you would like all objects to be private by default, remove this line.
    defaultACL.setPublicReadAccess(true);

    ParseACL.setDefaultACL(defaultACL, true);

    ParseObject testObject = new ParseObject("TestObject");
    testObject.put("foo", "bar");
    testObject.saveInBackground();
  }
}

日志

03-21 11:05:56.133: E/AndroidRuntime(2348): FATAL EXCEPTION: main
03-21 11:05:56.133: E/AndroidRuntime(2348): Process: com.example.baharat2, PID: 2348
03-21 11:05:56.133: E/AndroidRuntime(2348): java.lang.RuntimeException: You must call Parse.initialize(context, oauthKey, oauthSecret) before using the Parse library.
03-21 11:05:56.133: E/AndroidRuntime(2348):     at com.parse.ParseUser.checkApplicationContext(ParseUser.java:941)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at com.parse.ParseUser.getCurrentUser(ParseUser.java:813)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at com.example.baharat2.MainActivity$1.onClick(MainActivity.java:30)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at android.view.View.performClick(View.java:4438)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at android.view.View$PerformClick.run(View.java:18422)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at android.os.Handler.handleCallback(Handler.java:733)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at android.os.Handler.dispatchMessage(Handler.java:95)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at android.os.Looper.loop(Looper.java:136)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at android.app.ActivityThread.main(ActivityThread.java:5017)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at java.lang.reflect.Method.invokeNative(Native Method)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at java.lang.reflect.Method.invoke(Method.java:515)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
03-21 11:05:56.133: E/AndroidRuntime(2348):     at dalvik.system.NativeStart.main(Native Method)
03-21 11:06:01.753: I/Process(2348): Sending signal. PID: 2348 SIG: 9

我在 list 中也有这个(ParseInitialization) Activity

 <activity
 android:name="ParseInitialization">
 </activity>

有什么建议吗?

最佳答案

ParseInitialization 是一个应用程序,而不是一个 Activity 。如果你想把它作为一项 Activity ,请更改 java 代码。如果它是一个应用程序那么你需要改变你的androidManifest

申请声明样本:

 <application
        android:name="com.example.baharat2.ParseInitialization" >

....

</application>

关于Android 运行时和空点异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22562608/

相关文章:

android - 如何在 Jetpack Compose 中将当前填充应用于修改器?

android - 我们如何在android中将imageView设计在textView的角落?

eclipse - 在 Eclipse 中是否有一个快捷方式可以立即终止并删除所有任务?

java - 字符串中的字符打乱问题

android - AutoCompleteTextView 失去焦点

java - 如何打开和关闭fragment,点击android中的同一个按钮

java - 简单的应用程序无法在 Eclipse 中编译(带插件)?

java - tomcat 似乎部署了两次

java - 什么是NullPointerException,我该如何解决?

android - Drawable 的 mutate 方法 Android 1.6 中的 NullPointerException