#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) , сработало