Связывание базы данных Firebase Realtime с AutoCompleteTextView - PullRequest
0 голосов
/ 06 ноября 2019

Что я собираюсь сделать, так это чтобы пользователь ввел текст в AutoCompleteTextView, а затем для Firebase-Realtime, чтобы извлечь эту строку, найти совпадение в ее базе данных, а затем загрузить токен downloadURL из хранилища Firebase, котороеЯ храню в базе данных в реальном времени.

Я все еще новичок в использовании Firebase, и я знаю, что мой метод здесь не верен, может кто-нибудь показать мне правильный подход для этого? Большое спасибо.

public class Translate extends AppCompatActivity {

    private static final String TAG = "Translate";

    FirebaseStorage storage = FirebaseStorage.getInstance();
    FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
    DatabaseReference reference = firebaseDatabase.getReference();


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

        final Button button  = (Button)findViewById(R.id.button3);
        final ImageView imageView = findViewById(R.id.imageView1);
        AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView);


        String[] suggest = getResources().getStringArray(R.array.array);
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, 
        R.layout.support_simple_spinner_dropdown_item, suggest);
        textView.setAdapter(adapter);
        String source = textView.getText().toString();
        DatabaseReference childreference = reference.child(source);

        childreference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
               final String message = dataSnapshot.getValue(String.class);
                button.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        GlideApp.with(Translate.this).load(message).placeholder(R.drawable.ic_launcher_background).into(imageView);
                    }
                });
            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Log.d(TAG, databaseError.getMessage());
            }
        });
}


}

Но когда я запускаю код, приложение вылетает. Сообщение об ошибке:

E/AndroidRuntime: FATAL EXCEPTION: main
    java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.bim/com.example.bim.Translate}: java.lang.NullPointerException
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2106)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
        at android.app.ActivityThread.access$600(ActivityThread.java:141)
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:5041)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
        at dalvik.system.NativeStart.main(Native Method)
     Caused by: java.lang.NullPointerException
        at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:140)
        at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:103)
        at android.content.Context.obtainStyledAttributes(Context.java:373)
        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.bim.Translate.word(Translate.java:112)
        at com.example.bim.Translate.<init>(Translate.java:42)
        at java.lang.Class.newInstanceImpl(Native Method)
        at java.lang.Class.newInstance(Class.java:1319)
        at android.app.Instrumentation.newActivity(Instrumentation.java:1054)
        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2097)
        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
        at android.app.ActivityThread.access$600(ActivityThread.java:141) 
        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
        at android.os.Handler.dispatchMessage(Handler.java:99) 
        at android.os.Looper.loop(Looper.java:137) 
        at android.app.ActivityThread.main(ActivityThread.java:5041) 
        at java.lang.reflect.Method.invokeNative(Native Method) 
        at java.lang.reflect.Method.invoke(Method.java:511) 
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
        at dalvik.system.NativeStart.main(Native Method) 
11-06 11:14:02.803 5565-5606/com.example.bim D/FA: Logging event (FE): user_engagement(_e), Bundle[{ga_event_origin(_o)=auto, ga_screen_id(_si)=-7818069397072035945, engagement_time_msec(_et)=39350, ga_screen_class(_sc)=MainActivity}]
11-06 11:14:02.823 5565-5590/com.example.bim E/FirebaseInstanceId: Google Play services missing or without correct permission.
...