首页 > 解决方案 > 我如何在另一种方法中使用本地字符串值

问题描述

我已经通过意图将数据从 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);
    }

标签: javaandroid

解决方案


两种选择:

  • 声明image,titleurl外面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);
    }
  • Pass 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);
    }

推荐阅读