Как получить URL-адрес из FirebaseDatabase в виде текстовой строки, передаваемой другому действию в качестве URL-адреса?

#android

#Android

Вопрос:

Я пытаюсь получить URL-адрес из текста, полученного из базы данных firebase, и перейти к другому действию и воспроизвести его в видеообзоре,

в моем адаптере

 holder.animPlayer.setText(mAnmList.get(position).getVideourl());
  

в моем FirstActivity

  private void data() {

    FirebaseDatabase database = FirebaseDatabase.getInstance();
    DatabaseReference smsRef = database.getReference("Movies");
    smsRef.keepSynced(true);
    smsRef.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            for (DataSnapshot newsSnapshot : dataSnapshot.getChildren()) {
                TopItems item = newsSnapshot.getValue(TopItems.class);
                mSmsList.add(item);


            }

            mSmsAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    });

}

@Override
public void onMovieClick(AnimationItem animationItem, ImageView animImage) {

    final String videoUrl = animationItem.getVideourl();

    Intent intentAnimation = new Intent(MainActivity.this, MovieDetails.class);

    //putextra
    
    intentAnimation.putExtra("Video", videoUrl);
}
  

в моем SecondActivity

 moviePlayer = findViewById(R.id.player_view);
    Bundle b = getIntent().getExtras();
    String id = b.getString("Video");
    moviePlayer.setVideoPath(id);
    ProgressBar progressBar = new ProgressBar(MovieDetails.this);
    MediaController mediaController = new MediaController(MovieDetails.this);
    mediaController.setAnchorView(moviePlayer);
    moviePlayer.setMediaController(mediaController);
    moviePlayer.requestFocus();

    moviePlayer.start();
  

в AnimationItem

 private String videourl;

public AnimationItem( String videourl) {
    
    this.videourl = videourl;
}

public AnimationItem() {

}

public String getVideourl() {
    return videourl;
}

public void setVideourl(Uri videourl) {
    this.videourl = String.valueOf(videourl);
}
  

Ошибка

E / AndroidRuntime: ФАТАЛЬНОЕ ИСКЛЮЧЕНИЕ: основной процесс: com.example.smschecker, PID: 24016 java.lang.RuntimeException: Не удается запустить activity ComponentInfo{com.example.smschecker/com.example.smschecker .MovieDetails}: java.lang.Исключение NullPointerException: регистрация
в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2865) в android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2955) в android.app.ActivityThread.handleLaunchActivity.-wrap12 (неизвестный источник: 0)
в android.app.ActivityThread $H.handleMessage(ActivityThread.java: 1650)
в android.os.Handler.DispatchMessage(Handler.java: 106)
в android.os.Looper.loop(Looper.java: 164)
в android.app.ActivityThread.main(ActivityThread.java:6719)
в java.lang.reflect.Method.invoke(собственный метод)
в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:449)
в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
, вызванный: java.lang.Исключение NullPointerException: регистрация в android.net.Uri$StringUri.(Uri.java:476)
в android.net.Uri $StringUri.(Неизвестный источник: 0)
в android.net.Uri.parse(Uri.java: 438)
в android.widget.VideoView.setVideoPath(VideoView.java:248)
на com.пример.smschecker.MovieDetails.iniViews(MovieDetails.java:131)
в com.example.smschecker.MovieDetails.onCreate(MovieDetails.java:95)

при запуске SecondActivity происходит сбой, помогите

Ответ №1:

В MovieDetails activity измените с moviePlayer.setVideoPath(id); на moviePlayer.setVideoPath(Uri.parse(id));

Комментарии:

1. это сработало, спасибо, я ошибочно написал videourl в своем адаптере, в то время как в firebase есть videoURL, поэтому я изменил и написал Uri.parse(id) , сработало