Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按SharedReferences/Logcat错误_Java_Android - Fatal编程技术网

Java 按SharedReferences/Logcat错误

Java 按SharedReferences/Logcat错误,java,android,Java,Android,我调试了我的应用程序,得到了以下错误提示: java.lang.NullPointerException at com.simonic.filmstudio.LogActivity$1.onClick(LogActivity.java:42) at android.view.View.performClick(View.java:4752) at android.view.View$PerformClick.run(View.java:19561)

我调试了我的应用程序,得到了以下错误提示:

java.lang.NullPointerException
        at com.simonic.filmstudio.LogActivity$1.onClick(LogActivity.java:42)
        at android.view.View.performClick(View.java:4752)
        at android.view.View$PerformClick.run(View.java:19561)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:146)
        at android.app.ActivityThread.main(ActivityThread.java:5635)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
        at dalvik.system.NativeStart.main(Native Method)
Log.Activity.java:42
是这一行:
editor=sharedPrefs.edit()

这就是代码的其余部分:

package com.simonic.filmstudio;


import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LogActivity extends Activity {

//Buttons
Button startbutton;
//Variablen
EditText edtext;
String pname;
//Daten
SharedPreferences sharedPrefs;
SharedPreferences.Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    //Buttons
    startbutton = (Button)findViewById(R.id.startbutt);
    //EDTEXT
    edtext = (EditText)findViewById(R.id.editText); //SpielerName
    startbutton.setOnClickListener(new View.OnClickListener() { //Register Start Button

        @Override
        public void onClick(View v) {
            if (edtext.getText().toString().trim().isEmpty()) {
                Toast toast = new Toast(getApplicationContext());
                toast.setGravity(100, 100, 100);
                String nopname = "@string/nopname";
                Toast.makeText(LogActivity.this, nopname, Toast.LENGTH_SHORT).show();
            } else {
                editor = sharedPrefs.edit();
                pname = edtext.getText().toString();
                editor.putString("pname", pname);
                editor.putBoolean("regstat", true);
                editor.apply();
                startStudac();
            }
        }
    });
}

public void startStudac(){
    Intent intent = new Intent(LogActivity.this, StudioReg.class);
    startActivity(intent);
    overridePendingTransition(R.anim.abc_fade_in, R.anim.abc_fade_out);
}

@Override
protected void onStart() {
    super.onStart();
}

@Override
protected void onRestart() {
    super.onRestart();
}

@Override
protected void onResume() {
    super.onResume();
}

@Override
protected void onPause() {
    super.onPause();
}

@Override
protected void onStop() {
    super.onStop();
}

@Override
protected void onDestroy() {
    super.onDestroy();
}

}

我希望你能帮助我

在分配任何内容之前,您正在使用sharedPrefs。所以它是空的,因此出现了NullPointerException

要获取SharedReferences引用,由于您在匿名内部类中,您需要:

sharedPrefs = MyActivity.this.getSharedPreferences();
就你而言:

sharedPrefs = LogActivity.this.getSharedPreferences();

作为建议,我将
sharedPrefs
和首选项编辑器设置为onClick()方法的本地选项,因为您在活动的其他部分中没有使用它们

解决方案1:

而不是

String nopname = "@string/nopname";
写-

String nopname = "Simon";
解决方案2:

在strings.xml文件中写入:

<string name="nopname">Simon</string>

是的,但在任何其他上下文中,例如xml文件中的按钮等。它与“@string/nopname”一起工作。。。我想用其他语言翻译我的应用程序,因此我必须使用字符串。在这种情况下,为什么它不能与@string一起工作?你能帮我解决我的主要问题吗?共享偏好?
String nopname =  getApplicationContext().getResources().getString(R.string.nopname);