首页 > 解决方案 > 尝试在 Android Studio 中创建日志但应用程序崩溃

问题描述

在 Android Studio 中打开我的应用程序的第一个活动后,应用程序可以正常打开。我复制并粘贴了相同的主要活动代码以打开日志活动,并更改了所需的变量名称,但打开日志时应用程序崩溃。

这是打开日志的代码:

public class Activity2 extends AppCompatActivity {
    private Button buttonJournal;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_2);

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


    }

    public void openJournalActivity () {
        Intent intent = new Intent(this, JournalActivity.class);
        startActivity(intent);
    }
}

我正在开放的日志活动:(这可能是我的问题)

public class JournalActivity extends AppCompatActivity {

    static ArrayList<String> notes = new ArrayList<>();
    static ArrayAdapter arrayAdapter;

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.add_note_menu, menu);

        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item) {
        super.onOptionsItemSelected(item);

        if(item.getItemId() == R.id.add_note){

            Intent intent = new Intent(getApplicationContext(), NoteEditorActivity.class);

            startActivity(intent);

            return true;

        }

        return false;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_journal);

        ListView listView = findViewById(R.id.listView);

        SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("com.example.anxty", Context.MODE_PRIVATE);

        HashSet<String> set = (HashSet<String>) sharedPreferences.getStringSet("notes", null);

        if(set == null) {

            notes.add("Example note");

        } else{

            notes = new ArrayList(set);

        }

        arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, notes);

        listView.setAdapter(arrayAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                Intent intent = new Intent(getApplicationContext(), NoteEditorActivity.class);
                intent.putExtra("noteId",i);
                startActivity(intent);

            }
        });

        listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {

            @Override
            public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {

                final int itemToDelete = i;

                new AlertDialog.Builder(getApplicationContext())
                        .setIcon(android.R.drawable.ic_dialog_alert)
                        .setTitle("Are you sure?")
                        .setMessage("Do you want to delete this note")
                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int i) {

                                notes.remove(itemToDelete);
                                arrayAdapter.notifyDataSetChanged();

                                SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences("com.example.anxty", Context.MODE_PRIVATE);

                                HashSet<String> set = new HashSet(JournalActivity.notes);

                                sharedPreferences.edit().putStringSet("notes",set).apply();

                            }
                        })
                        .setNegativeButton("No", null)
                        .show();

                return true;
            }
        });

    }
}

应用程序崩溃时的 LogCat:

-06-11 11:55:55.744 6677-6677/com.example.anxty E/AndroidRuntime:致命异常:主进程:com.example.anxty,PID:6677 java.lang.RuntimeException:无法启动活动 ComponentInfo{com .example.anxty/com.example.anxty.JournalActivity}:java.lang.NullPointerException:尝试在 android 的空对象引用上调用虚拟方法 'void android.widget.ListView.setAdapter(android.widget.ListAdapter)'。 app.ActivityThread.performLaunchActivity(ActivityThread.java:2327) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 在 android.app.ActivityThread.access$800(ActivityThread.java:153) 在 android.app.ActivityThread$ H.handleMessage(ActivityThread.java:1305) 在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5293) 在 java.lang.reflect.Method.invoke(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:372) 在 com .android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 原因:java.lang.NullPointerException:尝试调用在 com.example.anxty.JournalActivity.onCreate(JournalActivity.java:79) 在 android.app.Activity.performCreate( Activity.java:5990) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2280) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2392) 在 android.app.ActivityThread.access$800(ActivityThread.java:153) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305)在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.os.Looper.loop(Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5293) 在 java.lang。 reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com. android.internal.os.ZygoteInit.main(ZygoteInit.java:698)在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 在 android.os.Looper.loop( Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5293) 在 java.lang.reflect.Method.invoke(Native Method) 在 java.lang.reflect.Method.invoke(Method.java: 372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)在 android.os.Handler.dispatchMessage(Handler.java:102) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1305) 在 android.os.Looper.loop( Looper.java:135) 在 android.app.ActivityThread.main(ActivityThread.java:5293) 在 java.lang.reflect.Method.invoke(Native Method) 在 java.lang.reflect.Method.invoke(Method.java: 372) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)main(ActivityThread.java:5293) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)main(ActivityThread.java:5293) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$ MethodAndArgsCaller.run(ZygoteInit.java:903) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698) 

显现:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:dist="http://schemas.android.com/apk/distribution"
    package="com.example.anxty">

    <dist:module dist:instant="true" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/anxty_logo"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/anxty_logo"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".NoteEditorActivity"></activity>
        <activity android:name=".JournalActivity" />
        <activity
            android:name=".ui.login.LoginActivity"
            android:label="@string/title_activity_login" />
        <activity
            android:name=".Activity2"
            android:label="@string/title_activity_2"
            android:theme="@style/AppTheme.NoActionBar" /> <!-- Main Activity -->
        <activity
            android:name=".MainActivity"
            android:screenOrientation="portrait" /> <!-- Splash Screen Activity -->
        <activity
            android:name=".SplashScreen"
            android:noHistory="true"
            android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

标签: javaandroid

解决方案


推荐阅读