すべてのSharedPreferencesデータを処理するクラスをインスタンス化しようとしていますが、NullPointerExceptionが発生しています。Activityのクラスインスタンス化がNullPointerExceptionを取得する
上記はLogCatの出力です。
01-02 14:24:52.234: E/AndroidRuntime(2599): FATAL EXCEPTION: main
01-02 14:24:52.234: E/AndroidRuntime(2599): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.my.app.android.myapp/com.my.app.android.myapp.MyAppAppActivity}: java.lang.NullPointerException
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1573)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.os.Looper.loop(Looper.java:123)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.ActivityThread.main(ActivityThread.java:3687)
01-02 14:24:52.234: E/AndroidRuntime(2599): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 14:24:52.234: E/AndroidRuntime(2599): at java.lang.reflect.Method.invoke(Method.java:507)
01-02 14:24:52.234: E/AndroidRuntime(2599): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
01-02 14:24:52.234: E/AndroidRuntime(2599): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
01-02 14:24:52.234: E/AndroidRuntime(2599): at dalvik.system.NativeStart.main(Native Method)
01-02 14:24:52.234: E/AndroidRuntime(2599): Caused by: java.lang.NullPointerException
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:100)
01-02 14:24:52.234: E/AndroidRuntime(2599): at com.my.app.android.myapp.MyAppAppActivity.<init>(MyAppAppActivity.java:9)
01-02 14:24:52.234: E/AndroidRuntime(2599): at java.lang.Class.newInstanceImpl(Native Method)
01-02 14:24:52.234: E/AndroidRuntime(2599): at java.lang.Class.newInstance(Class.java:1409)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
01-02 14:24:52.234: E/AndroidRuntime(2599): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1565)
01-02 14:24:52.234: E/AndroidRuntime(2599): ... 11 more
主な活動:
package com.my.app.android.myapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
public class MyAppAppActivity extends Activity {
private Login login = new Login(getApplicationContext());
@Override
public void onCreate(Bundle savedInstanceState) {
Intent i;
super.onCreate(savedInstanceState);
// Temos um token?
if (login.checkLogin()) {
// Mapa
i = new Intent(this, MyAppMapActivity.class);
Toast.makeText(this, "Logado", Toast.LENGTH_LONG).show();
} else {
// Login
i = new Intent(this, MyAppLoginActivity.class);
Toast.makeText(this, "Não logado", Toast.LENGTH_LONG).show();
}
// Inicia a atividade
startActivity(i);
}
}
ログインクラス:
package com.my.app.android.myapp;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
public class Login {
private static final String APP_SHARED_PREFS = "com.my.app.android.myapp";
private SharedPreferences prefs;
private Editor editor;
private Context __context;
public Login(Context context) {
// Salva o contexto
__context = context;
// Acessa as preferencias
this.prefs = context.getSharedPreferences(APP_SHARED_PREFS, Activity.MODE_PRIVATE);
this.editor = this.prefs.edit();
}
public void logout() {
// Remove o token salvo nas preferencias
editor.putString("token_auth", "");
editor.commit();
// Chama a tela de login
Intent i = new Intent(__context, MyAppAppActivity.class);
__context.startActivity(i);
}
public boolean checkLogin() {
if (prefs.getString("token_auth", "") != "") {
return true;
} else {
return false;
}
}
public void setToken(String token) {
editor.putString("token_auth", token);
editor.commit();
}
public String getToken() {
return prefs.getString("token_auth", "");
}
}
あなたが何かを必要とする場合は、単に尋ねます。
ありがとうございました。あなたの
は –
はまだ問題が続く場合は、今、あなたの前のを削除し,,もう一つ – AAnkit
....もう一度試して答えを編集した...同じ問題を継続ログと新しいもの... – AAnkit