我已经通过intent将数据从recyclerview mainactivity传递到exoplayer活动。现在的问题是我想在另一种方法中使用该值。所以我该如何在其他方法中使用该值。
exoplayer活动:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exoplayer);
thumb = findViewById(R.id.thumb);
head = findViewById(R.id.head);
String image = getIntent().getStringExtra("image");
String title = getIntent().getStringExtra("title");
//i want use this String value in different method
String url = getIntent().getStringExtra("url");
head.setText(title);
Glide.with(this).asBitmap().load(image).into(thumb);
initializeplayer();
}
//i want use that string value in this method.
public void initializeplayer(){
playerView = findViewById(R.id.exo);
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this);
playerView.setPlayer(simpleExoPlayer);
DataSource.Factory datasourcefactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "appname"));
MediaSource mediaSource = new ExtractorMediaSource.Factory(datasourcefactory)
.createMediaSource(Uri.parse(url1));
simpleExoPlayer.prepare(mediaSource);
simpleExoPlayer.setPlayWhenReady(true);
}
只需将参数添加到您的方法中。例如:public void initializeplayer(String arg){}
两个选项:
image
外部声明title
,url
和onCreate()
:
String image;
String title;
String url;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exoplayer);
thumb = findViewById(R.id.thumb);
head = findViewById(R.id.head);
image = getIntent().getStringExtra("image");
title = getIntent().getStringExtra("title");
//i want use this String value in different method
url = getIntent().getStringExtra("url");
head.setText(title);
Glide.with(this).asBitmap().load(image).into(thumb);
initializeplayer();
}
//i want use that string value in this method.
public void initializeplayer(){
//use image, title and url
playerView = findViewById(R.id.exo);
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this);
playerView.setPlayer(simpleExoPlayer);
DataSource.Factory datasourcefactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "appname"));
MediaSource mediaSource = new ExtractorMediaSource.Factory(datasourcefactory)
.createMediaSource(Uri.parse(url1));
simpleExoPlayer.prepare(mediaSource);
simpleExoPlayer.setPlayWhenReady(true);
}
image
,title
和url
作为initializeplayer
的参数:protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exoplayer);
thumb = findViewById(R.id.thumb);
head = findViewById(R.id.head);
String image = getIntent().getStringExtra("image");
String title = getIntent().getStringExtra("title");
//i want use this String value in different method
String url = getIntent().getStringExtra("url");
head.setText(title);
Glide.with(this).asBitmap().load(image).into(thumb);
initializeplayer(image, title, url);
}
//i want use that string value in this method.
public void initializeplayer(String image, String title, String url){
//use image, title and url
playerView = findViewById(R.id.exo);
simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(this);
playerView.setPlayer(simpleExoPlayer);
DataSource.Factory datasourcefactory = new DefaultDataSourceFactory(this,
Util.getUserAgent(this, "appname"));
MediaSource mediaSource = new ExtractorMediaSource.Factory(datasourcefactory)
.createMediaSource(Uri.parse(url1));
simpleExoPlayer.prepare(mediaSource);
simpleExoPlayer.setPlayWhenReady(true);
}
您还可以使这些变量global并在不需要一次又一次传递它的任何函数中使用它。
public String image;
public String title;
public String url;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_exoplayer);
---add your code---
您可以简单地传递该值,同时将方法调用为
initializeplayer(url);
并且在方法声明中进行少量更改为
public void initializeplayer(String url){
//access url in this method
}
我看不出您为什么不能这样做的原因。