Android java исключение нулевой точки в view.setonclicklistener в secend init, почему они не совпадают

У меня есть эта проблема, и она показывает мне следующую ошибку

пожалуйста, помогите мне: Я получаю исключение NullPointerException в init2 (). Похоже смс не имеет значения. Я не понимаю в чем проблема

Process: com.example.android.projectdestage, PID: 11049 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.android.projectdestage/com.example.android.projectdestage.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2984) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045) at android.app.ActivityThread.-wrap14(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6776) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.example.android.projectdestage.MainActivity.init2(MainActivity.java:60) at com.example.android.projectdestage.MainActivity.onCreate(MainActivity.java:38) at android.app.Activity.performCreate(Activity.java:6956) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1126) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2927) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)  at android.app.ActivityThread.-wrap14(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1642)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6776)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1518)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)

**** это моя основная деятельность ****

    import android.app.Dialog;
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;

    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.GoogleApiAvailability;

    public class MainActivity extends AppCompatActivity


    {

    private Button sms;
    private Button btnMap;


        private static final String TAG = "MainActivity";

        private static final int ERROR_DIALOG_REQUEST = 9001;


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



            if (isServicesOK()){
                init();
                init2();
            }
        }


        private void init(){
            Button btnMap = (Button) findViewById(R.id.btnMap);
            btnMap.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Intent intent = new Intent(MainActivity.this, MapActivity.class);
                    startActivity(intent);

                }
            });
        }

        private void init2()
        {
            Button sms = (Button) findViewById(R.id.sms);
            sms.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent message = new Intent(MainActivity.this, MainActivity2.class);
                    startActivity(message);
                }
            });
        }







        public boolean isServicesOK()
        {
            Log.d(TAG, "isServicesOK: checking google services version");

            int available = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(MainActivity.this);

            if (available == ConnectionResult.SUCCESS)
            {
                // koulchi mli7 map request
                Log.d(TAG, "isServicesOK: Google Play Services is working");
                return true;
            }
            else if (GoogleApiAvailability.getInstance().isUserResolvableError(available))
            {
                //test d erreur
                Log.d(TAG, "isServicesOK: an error occured but we can fix it");
                Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(MainActivity.this, available, ERROR_DIALOG_REQUEST);
                dialog.show();
            }else
                {
                Toast.makeText(this, "You can't make map requests", Toast.LENGTH_SHORT).show();
                }
            return false;
        }



    }

`**this is my mainactivity xml**`



        <?xml version = "1.0" encoding = "utf-8"?>
    <android.support.constraint.ConstraintLayout xmlns:android = "http://schemas.android.com/apk/res/android"
        xmlns:app = "http://schemas.android.com/apk/res-auto"
        xmlns:tools = "http://schemas.android.com/tools"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        tools:context = "com.example.android.projectdestage.MainActivity">

        <Button
            android:id = "@+id/btnMap"
            android:layout_width = "87dp"
            android:layout_height = "45dp"
            android:layout_marginEnd = "8dp"
            android:layout_marginStart = "8dp"
            android:layout_marginTop = "244dp"
            android:text = "@string/map"
            app:layout_constraintEnd_toEndOf = "parent"
            app:layout_constraintHorizontal_bias = "0.43"
            app:layout_constraintStart_toStartOf = "parent"
            app:layout_constraintTop_toTopOf = "parent" />

        <Button
            android:id = "@+id/smsbtn"
            android:layout_width = "wrap_content"
            android:layout_height = "43dp"
            android:layout_marginBottom = "136dp"
            android:layout_marginEnd = "8dp"
            android:layout_marginStart = "8dp"
            android:layout_marginTop = "8dp"
            android:text = "@string/enter_your_message"
            app:layout_constraintBottom_toBottomOf = "parent"
            app:layout_constraintEnd_toEndOf = "parent"
            app:layout_constraintHorizontal_bias = "0.43"
            app:layout_constraintStart_toStartOf = "parent" />

    </android.support.constraint.ConstraintLayout>

**and the main2activity xml**

    <?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:app = "http://schemas.android.com/apk/res-auto"
    xmlns:tools = "http://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:gravity = "center"

    android:orientation = "vertical"
    tools:context = "com.example.android.projectdestage.MainActivity2">


    <TextView
        android:id = "@+id/editText"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:text = "@string/enter_your_message"
        android:textSize = "30sp" />

    <LinearLayout
        android:layout_width = "match_parent"
        android:layout_height = "519dp"
        android:orientation = "vertical">

        <TextView
            android:id = "@+id/editText2"
            android:layout_width = "385dp"
            android:layout_height = "410dp"
            android:layout_marginTop = "50dp"
            android:layout_weight = "1"
            android:text = "@string/textview" />

        <Button
            android:id = "@+id/btnSendSMSendSms"
            android:layout_width = "wrap_content"
            android:layout_height = "250dp"
            android:layout_marginLeft = "150dp"
            android:layout_marginStart = "150dp"
            android:layout_marginVertical = "110dp"

            android:layout_weight = "1"
            android:text = "@string/sendsms"
            tools:targetApi = "o" />

    </LinearLayout>

    </LinearLayout>

и mapactivity xmlя думаю главная проблема здесь

<?xml version = "1.0" encoding = "utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools" android:layout_width = "match_parent"
    android:layout_height = "match_parent">

    <fragment xmlns:android = "http://schemas.android.com/apk/res/android"
        xmlns:tools = "http://schemas.android.com/tools"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent"
        android:id = "@+id/map"
        tools:context = ".MapsActivity"
        android:name = "com.google.android.gms.maps.SupportMapFragment" />

    <RelativeLayout
        android:layout_width = "match_parent"
        android:layout_height = "50dp"
        android:layout_marginTop = "10dp"
        android:layout_marginRight = "10dp"
        android:layout_marginLeft = "10dp"
        android:elevation = "10dp"
        android:background = "@drawable/white_border"
        android:id = "@+id/relLayout1" tools:targetApi = "lollipop">

        <ImageView
            android:layout_width = "15dp"
            android:layout_height = "15dp"
            android:id = "@+id/ic_magnify"
            android:layout_centerVertical = "true"
            android:layout_marginLeft = "10dp"
            android:src = "@drawable/ic_magnify" android:contentDescription = "@string/todoo" android:layout_marginStart = "10dp" />

        <AutoCompleteTextView
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:layout_toRightOf = "@+id/ic_magnify"
            android:layout_centerVertical = "true"
            android:textSize = "15sp"
            android:textColor = "#000"
            android:id = "@+id/input_search"
            android:background = "@null"
            android:hint = "@string/enter_address_city_or_zip_code"
            android:imeOptions = "actionSearch" android:layout_toEndOf = "@+id/ic_magnify" />


    </RelativeLayout>

    <ImageView
        android:layout_width = "40dp"
        android:layout_height = "40dp"
        android:layout_below = "@id/relLayout1"
        android:layout_alignParentRight = "true"
        android:layout_marginRight = "10dp"
        android:layout_marginTop = "10dp"
        android:scaleType = "centerCrop"
        android:id = "@+id/ic_gps"
        android:src = "@drawable/ic_gps" android:contentDescription = "@string/todo" android:layout_alignParentEnd = "true" android:layout_marginEnd = "10dp" />

    <ImageView
        android:layout_width = "40dp"
        android:layout_height = "40dp"
        android:id = "@+id/place_picker"
        android:layout_marginLeft = "10dp"
        android:layout_marginTop = "15dp"
        android:scaleType = "centerCrop"
        android:layout_below = "@+id/relLayout1"
        android:src = "@drawable/ic_map" android:contentDescription = "@string/todoml" android:layout_marginStart = "10dp" />

    <ImageView
        android:layout_width = "40dp"
        android:layout_height = "40dp"
        android:layout_below = "@+id/place_picker"
        android:layout_marginLeft = "10dp"
        android:layout_marginTop = "15dp"
        android:scaleType = "centerCrop"
        android:id = "@+id/place_info"
        android:src = "@drawable/ic_info" android:layout_marginStart = "10dp" android:contentDescription = "@string/todoop" />




</RelativeLayout>

Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо

Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо Спасибо

Возможный дубликат Что такое исключение NullPointerException и как его исправить?

rghome 27.07.2018 12:20

Объект, для которого вы вызываете setOnClickListener, имеет значение NULL. Так что смс не имеет значения.

rghome 27.07.2018 12:23

так как я могу это исправить

Abdeljabbar El Mediouni 27.07.2018 12:29

вы добавили свою активность в манифест?

Tara 27.07.2018 13:19

да, я сделал и все действия в манифесте

Abdeljabbar El Mediouni 27.07.2018 13:31

Загрузите свой макет в формате XML.

Susmit Agrawal 27.07.2018 13:54

почему u parellel вызвал как init (), так и init2 () @AbdeljabbarElMediouni

Revathi Manoharan 27.07.2018 14:13

загрузите ваш xml файл

Revathi Manoharan 27.07.2018 14:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
8
121
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Button sms = (Button) findViewById(R.id.sms); возвращает ноль

Это означает, что он не может найти R.id.sms в вашем макете activity_main.xml.

Может быть, это опечатка или ошибка копирования и вставки? Проверьте, действительно ли ID этой кнопки в этом файле - sms.

Также, если у вас есть несколько макетов для разных размеров экрана и т. д. Отметьте их все.

У вас есть smsBtn в качестве идентификатора для кнопки sms в файле activity_main.xml, тогда как вы передали sms в качестве идентификатора. Таким образом, идентификатор с sms не найден, поэтому кнопка имеет значение null и выдает исключение нулевого указателя.

Есть лучший подход, который может сделать это с помощью библиотеки Butterknife:

    public class MainActivity extends AppCompatActivity


    {
    @BindView(R.id.smsBtn)
    private Button sms;

    @BindView(R.id.btnMap)
    private Button btnMap;


        private static final String TAG = "MainActivity";

        private static final int ERROR_DIALOG_REQUEST = 9001;


        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
           this.setContentView(R.layout.activity_main);
           ButterKnife.bind(this);


        }


    @OnClick({R.id.btnMap, R.id.smsBtn})
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btnMap:
           //Your functionality
                break;
            case R.id.smsBtn:
           //Your functionality
                break;
        }
    }
    }

 
//Dependency for ButterKnife library
    implementation 'com.jakewharton:butterknife:8.8.1'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

//Butterknife link
https://github.com/JakeWharton/butterknife

Другие вопросы по теме