2015-07-11 2 views
-2

я отлажена мое приложение и получил этот errorline:по SharedPreferences/Logcat ошибка

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(); 
} 

} 

I надеюсь, вы можете мне помочь!

ответ

0

Вы используете sharedPrefs, прежде чем назначать ему что-либо. Так что нуль, следовательно, NullPointerException

Чтобы получить ссылку SharedPreferences, как вы находитесь внутри анонимный внутренний класс вам нужно:

sharedPrefs = MyActivity.this.getSharedPreferences(); 

В вашем случае:

sharedPrefs = LogActivity.this.getSharedPreferences(); 

В качестве предложения я сделал sharedPrefs и редактор предпочтений, местный для этого метода onClick(), поскольку вы не используете их в других частях вашей деятельности.

0

Решение 1:

вместо

String nopname = "@string/nopname"; 

записи -

String nopname = "Simon"; 

Решение 2:

В strings.xml записи файла:

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

и в классе деятельности:

String nopname = getApplicationContext().getResources().getString(R.string.nopname); 
+0

Да, но в любом другом контексте для примера Пуговицы в XML-файлах и т.д. он работает с «@ строки/nopname» ... Я хочу, чтобы перевести мое приложение на других языках и поэтому я должен делать это со струнами. Почему это не работает с @string в этом случае? И вы можете помочь мне с моей основной проблемой? Общие настройки? –

Смежные вопросы