簡體   English   中英

我如何在另一種方法中使用本地字符串值

[英]how can i use local String value in another method

我已經通過意圖將數據從 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);
    }

兩種選擇:

  • onCreate()之外聲明imagetitleurl ,如下所示:

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的 arguments 傳遞,如下所示:
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);
    }

您還可以將這些變量設為全局變量並在任何 function 中使用它,您無需一次又一次地傳遞它。

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
}

我看不出有什么理由你不能這樣做。

只需將參數添加到您的方法中。 例如: public void initializeplayer(String arg){}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM