我有一个应用程序可以在视频中播放视频。此应用程序在Firebase数据库上有一个子事件侦听器。当我更改db(来自其他应用程序)上的参数时,我想更改videoview中的视频。 代码仍然有效,但我无法听取参数的变化。 这是代码
import javafx.application.Application;
import javafx.scene.control.Label;
import javafx.scene.control.Button;
import javafx.scene.layout.Pane;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Example extends Application{
@Override
public void start (Stage primaryStage) {
Pane pane=new Pane();
Label label=new Label();
Button bt=new Button("Start");
pane.getChildren().addAll(bt,label);
bt.setOnAction(e->{
for (int i=0;i<10000000;i++) label.setText(label.getText()+i);
});
Scene scene = new Scene(pane,1000,500);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
这是我的参数类:
public class activity_main extends AppCompatActivity {
private DatabaseReference mDatabase;
VideoView videoview;
TextView tV;
String path;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("parametri").child("nowPlaying").setValue("video01");
videoview = (VideoView) findViewById(R.id.videoView);
tV = (TextView) findViewById(R.id.textView);
path = "android.resource://" + getPackageName() + "/" + R.raw.video01;
videoview.setVideoURI(Uri.parse(path));
videoview.start();
mDatabase.child("parametri").child("nowPlaying").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String value = dataSnapshot.getValue(String.class);
tV.setText(value);
Log.e("Valore attuale: " , value);
switch (value) {
case "video01" :
tV.setText("Video01");
path = "android.resource://" + getPackageName() + "/" + R.raw.video01;
videoview.stopPlayback();
videoview.setVideoURI(Uri.parse(path));
videoview.start();
break;
case "video02" :
tV.setText("Video02");
path = "android.resource://" + getPackageName() + "/" + R.raw.video02;
videoview.stopPlayback();
videoview.setVideoURI(Uri.parse(path));
videoview.start();
break;
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
我的应用的每个部分都有效,但我无法更改视频内的视频。问题是什么?
答案 0 :(得分:1)
不要使用addListenerForSingleValueEvent,而是使用addValueEventListener。
您可以在此处找到有何不同之处:https://firebase.google.com/docs/database/android/read-and-write