Что я собираюсь сделать, так это чтобы пользователь ввел текст в 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.