Возникает ошибка при использовании startActivity()

284
05 июля 2022, 21:30

У меня есть код:

package com.codex.touchface;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.TextView;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import java.util.Random;
public class SplashActivity extends AppCompatActivity {
    public Intent activity_splash1;
    public TextView textDown;
    public int get_ban;
    public int ban;
    public int signup;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash);
        textDown = findViewById(R.id.textDown);
        Random random = new Random();
        int text_downRandom = random.nextInt(4);
        if (text_downRandom == 1){
            textDown.setText("#общайся");
        }
        if (text_downRandom == 2){
            textDown.setText("#обсуждай");
        }
        if (text_downRandom == 3){
            textDown.setText("#продавай");
        }
        if (text_downRandom == 4){
            textDown.setText("#покупай");
        }
        DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("User");
        FirebaseAuth mAuth = FirebaseAuth.getInstance();
        FirebaseUser cUser = mAuth.getCurrentUser();
        if (cUser != null) {
            final String id = mAuth.getCurrentUser().getUid();
            myRef.child(id).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
                        UserGet userGet = dataSnapshot.getValue(UserGet.class);
                        get_ban = userGet.getBan();
                    }
                    if (get_ban == 0) {
                        ban = 2;
                    } else {
                        ban = 1;
                    }
                }
                @Override
                public void onCancelled(@NonNull DatabaseError error) {
                }
            });
        }
        else {
            signup = 1;
        }
        Handler handler = new Handler();
        handler.postDelayed(() -> {
            if (ban == 2){
                activity_splash1 = new Intent(getApplicationContext(), Main.class);
            }
            if (ban == 1){
                activity_splash1 = new Intent(getApplicationContext(), Ban.class);
            }
            if (signup == 1){
                activity_splash1 = new Intent(getApplicationContext(), SignIn.class);
            }
            startActivity(activity_splash1);
            overridePendingTransition(0,0);
            }, 1000);
    }
}

При запуске приложения происходит ошибка :

E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.codex.touchface, PID: 9126
    java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String android.content.Intent.toString()' on a null object reference
        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1682)
        at android.app.Activity.startActivityForResult(Activity.java:5258)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:675)
        at android.app.Activity.startActivityForResult(Activity.java:5216)
        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:662)
        at android.app.Activity.startActivity(Activity.java:5587)
        at android.app.Activity.startActivity(Activity.java:5555)
        at com.codex.touchface.SplashActivity.lambda$onCreate$0$SplashActivity(SplashActivity.java:88)
        at com.codex.touchface.-$$Lambda$SplashActivity$e5v8bUh7wXNBSzQqMlH-8kdc1jQ.run(Unknown Source:2)
        at android.os.Handler.handleCallback(Handler.java:883)
        at android.os.Handler.dispatchMessage(Handler.java:100)
        at android.os.Looper.loop(Looper.java:224)
        at android.app.ActivityThread.main(ActivityThread.java:7590)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
I/Process: Sending signal. PID: 9126 SIG: 9

Android Studio указывает на startActivity(activity_splash1);

Можете помочь пожалуйста. Не могу разобраться с этой ошибкой уже более месяца.

Answer 1

Intent не имеет никакого присвоения, потому что скорее всего никакой из последних условий If не выполняется. Отлогируй все случаи и поймешь какой кусок не работает

READ ALSO
HQL-запрос к Базе Данных работает не корректно с OneToMany

HQL-запрос к Базе Данных работает не корректно с OneToMany

У меня есть две сущности: Customer и CustomerOrderЗависимость между ними One-to-Many

150
Как получить размер экрана в пикселях в android?

Как получить размер экрана в пикселях в android?

Мне нужно получить ширину и высоту экрана на устройстве, на котором сейчас выполняется приложениеКак мне это сделать?

241
Как дождаться выполнение асинхронного метода?

Как дождаться выполнение асинхронного метода?

Как мне дождаться выполнение асинхронного метода? Есть такой метод ServergetData(DataListener listener); Данные загружаются в отдельном потоке, и по завершению...

237
передача данных из одного окна в другое JavaFX

передача данных из одного окна в другое JavaFX

Здесь на странице регистрации я хочу передать допустим имя в следующее окно вот так:

164