我如何在另一种方法中使用本地String值

问题描述 投票:-1回答:4

我已经通过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);
    }
java android
4个回答
0
投票

只需将参数添加到您的方法中。例如:public void initializeplayer(String arg){}


0
投票

两个选项:

  • 像这样在image外部声明titleurlonCreate()

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);
    }
  • 像这样传递imagetitleurl作为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);
    }

0
投票

您还可以使这些变量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---

0
投票

您可以简单地传递该值,同时将方法调用为

initializeplayer(url);

并且在方法声明中进行少量更改为

public void initializeplayer(String url){
    //access url in this method
}

我看不出您为什么不能这样做的原因。

© www.soinside.com 2019 - 2024. All rights reserved.