Сбой активности при включении общих настроек - PullRequest
0 голосов
/ 26 октября 2019

Моя деятельность работает нормально, но когда я включаю этот код, он внезапно падает:

Кто-нибудь знает, почему это происходит?

Без этого кода он не падает. Он падает, как только открывается действие, даже когда я не вызываю какую-либо функцию. Что мне здесь не хватает?

Я использую последнюю версию Android Studio, и в файле .xml нет ошибок, но среда IDE также не обнаруживает ошибок в этом коде, не так ли? Может быть, модуль слишком старый или что-то в этом роде?

Также в файле «Activity.java» есть масса ошибок, но, как я уже говорил, когда я просто удаляю код ниже, он работает нормально. Я, вероятно, просто пропускаю какую-то команду или что-то, кто-нибудь знает, как мне помочь с этим?

Это дает мне следующую ошибку:

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.sltoolset, PID: 8778
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.sltoolset/com.example.sltoolset.Notas}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3194)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409)
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83)
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016)
        at android.os.Handler.dispatchMessage(Handler.java:107)
        at android.os.Looper.loop(Looper.java:214)
        at android.app.ActivityThread.main(ActivityThread.java:7356)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.pm.ApplicationInfo android.content.Context.getApplicationInfo()' on a null object reference
        at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:163)
        at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:174)
        at android.content.Context.obtainStyledAttributes(Context.java:738)
        at androidx.appcompat.app.AppCompatDelegateImpl.createSubDecor(AppCompatDelegateImpl.java:692)
        at androidx.appcompat.app.AppCompatDelegateImpl.ensureSubDecor(AppCompatDelegateImpl.java:659)
        at androidx.appcompat.app.AppCompatDelegateImpl.findViewById(AppCompatDelegateImpl.java:479)
        at androidx.appcompat.app.AppCompatActivity.findViewById(AppCompatActivity.java:214)
        at com.example.sltoolset.Notas.<init>(Notas.java:26)
        at java.lang.Class.newInstance(Native Method)
        at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95)
        at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:41)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1243)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3182)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) 
        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) 
        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) 
        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) 
        at android.os.Handler.dispatchMessage(Handler.java:107) 
        at android.os.Looper.loop(Looper.java:214) 
        at android.app.ActivityThread.main(ActivityThread.java:7356) 
        at java.lang.reflect.Method.invoke(Native Method) 
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) 
I/Process: Sending signal. PID: 8778 SIG: 9
Process 8778 terminated.

Мой код:

public static final String TEXT = "text";
    private EditText edt1 = (EditText) findViewById(R.id.editText);
    private String text;

public void guardar(View view) 
    {
        SharedPreferences sp = getSharedPreferences(TEXT, MODE_PRIVATE);
        SharedPreferences.Editor edt = sp.edit();
        edt.putString(TEXT, edt1.getText().toString());
        edt.apply();
        Toast.makeText(this, "Se guardo el texto", Toast.LENGTH_SHORT).show();
    }
    public void cargar()
    {
        SharedPreferences sp = getSharedPreferences(TEXT, MODE_PRIVATE);
        text = sp.getString(TEXT, "");
    } 

1 Ответ

0 голосов
/ 29 октября 2019

Здравствуйте,

Из того, что я узнал в колледже и по моему опыту, использование SharedPreference не является идеальным способом.

попробуйте этот способ инициирования и вызоваОбъект SharedPreference:

 SharedPreference sp = PreferenceManager.getDefaultSharedPreferences(this);
 text = sp.getString(TEXT, "");       //I actually prefer to put null as default instead of ""

ваш putBoolean выглядит нормально, и не забудьте импортировать все, что с ним связано.

 import android.content.SharedPreferences;
 import android.preference.PreferenceManager;
 //And everything else the android studio(or other IDE) tells you.

, если проблема не устранена, попробуйте заменить .apply() с .commit(), но в большинстве случаев .apply() будет лучше (редко по какой-то причине компилятор хочет, чтобы я использовал оба).

Обратите внимание:

Если вы все еще хотитеиспользуя способ, которым вы пытаетесь, вы можете обратиться к этим ответам:

Пожалуйста, держите нас в курсе вашего решения проблемы, и не забудьте принять ответ.

...