Крашится приложение Android

122
09 января 2020, 01:20

MainActivity:

private Button Num1, btn;
private EditText pass;

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

//  FloatingActionButton fab = findViewById(R.id.fab);
// fab.setOnClickListener(new View.OnClickListener() {
//    @Override
//  public void onClick(View view) {
//       Sandbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
//         .setAction("Action", null).show();

private void addListenerOnButton() {
    btn.setOnClickListener(
            new View.OnClickListener() {
                @SuppressLint
                        ("SetTextI18n")
                public void onClick(View v) {
                    btn.setText("DONE");
                    btn.setBackgroundTintList(ColorStateList.valueOf(Color.RED));
                    Toast.makeText(
                            MainActivity.this, pass.getText(),
                            Toast.LENGTH_SHORT
                    ).show();
                }
            }
    );

    Num1.setOnClickListener(
            new View.OnClickListener() {
                public void onClick(View v) {
                    Intent intent = new Intent("MainActivity2");
                    startActivity(intent);
                }
            });

}
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.menu_main, menu);
    return true;
}

public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    //noinspection SimplifiableIfStatement
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
public void addListenerOnButton(View view) {
    btn.setOnClickListener(
            new View.OnClickListener() {
                @SuppressLint
                        ("SetTextI18n")
                public void onClick(View v) {
                    btn.setText("DONE");
                    btn.setBackgroundTintList(ColorStateList.valueOf(Color.RED));
                    Toast.makeText(
                            MainActivity.this, pass.getText(),
                            Toast.LENGTH_SHORT
                    ).show();
                }
            }
    );
            Num1.setOnClickListener(
                    new View.OnClickListener() {
                        public void onClick(View v) {
                            Intent intent = new Intent("MainActivity2");
                            startActivity(intent);
                        }
                    });

}
}

Manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.car">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity
            android:name=".MainActivity2"
            android:label="@string/title_activity_main2"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <data
                    android:scheme="https"
                    android:host="vk.com"
                    android:pathPattern="/vk.com" />
            </intent-filter>
        </activity>
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

Логи:

2019-04-04 19:21:17.327 5326-5326/com.example.car E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.car, PID: 5326
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.car/com.example.car.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.example.car.MainActivity.addListenerOnButton(MainActivity.java:44)
        at com.example.car.MainActivity.onCreate(MainActivity.java:30)
        at android.app.Activity.performCreate(Activity.java:6662)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707at android.app.ActivityThread.-wrap12(ActivityThread.javaat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460at android.os.Handler.dispatchMessage(Handler.java:102at android.os.Looper.loop(Looper.java:154at android.app.ActivityThread.main(ActivityThread.java:6077at java.lang.reflect.Method.invoke(Native Methodat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756

При запуске приложения на эмуляторе оно сразу-же закрывается "Car has stopped". Может ли это быть из-за неправильно выбранной версии Android? Возможно я что-то напутал с манифестом.

Сделал уже все что мог. Помогите, пожалуйста

Логи2:

2019-04-04 19:41:13.070 6101-6101/com.example.car E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.example.car, PID: 6101
    java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.car/com.example.car.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)
        at android.app.ActivityThread.-wrap12(ActivityThread.java)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)
        at android.os.Handler.dispatchMessage(Handler.java:102)
        at android.os.Looper.loop(Looper.java:154)
        at android.app.ActivityThread.main(ActivityThread.java:6077)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756)
     Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        at com.example.car.MainActivity.addListenerOnButton(MainActivity.java:38)
        at com.example.car.MainActivity.onCreate(MainActivity.java:30)
        at android.app.Activity.performCreate(Activity.java:6662)
        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707at android.app.ActivityThread.-wrap12(ActivityThread.javaat android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460at android.os.Handler.dispatchMessage(Handler.java:102at android.os.Looper.loop(Looper.java:154at android.app.ActivityThread.main(ActivityThread.java:6077at java.lang.reflect.Method.invoke(Native Methodat com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756
Answer 1

У Вас объявлены поля, но им не присвоено значений, далее идёт обращение к этим полям. Нужно в onCreate найти виджеты из разметки, чтобы с ними работать.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn.findViewById(R.id.yourButton); // здесь id кнопки
    // инициализация остальных вью
    // после можно устанавливать им слушателей, тексты, картинки и т.д.
    addListenerOnButton();
}
READ ALSO
Присваивание и логические операторы java

Присваивание и логические операторы java

Во время написания одной программы возник интересный вопрос: "Можно ли как-то присвоить нескольким переменным одинаковое значение с помощью...

112
Android. Где хранить изменяемые строковые ресурсы?

Android. Где хранить изменяемые строковые ресурсы?

Есть готовое приложение учета зарплатыВ нем есть 5 категорий - зарплата, аванс, больничные, отпускные, иное

125
Cannot infer arguments - Java

Cannot infer arguments - Java

Вот создаю ArrayList для массивов, чтобы потом удалить в них значения, но у третьей строчки выскакивает ошибка у <> - Cannot infer argumentsЧто за непонятная...

139
Discord JDA. Дать юзерам Permission на созданном канале

Discord JDA. Дать юзерам Permission на созданном канале

Я создаю канал с помощью команды + упомнинанием от 1 и более участника сервер и хочу сделать его частным, и чтобы только определенные люди...

127