在活动之间发送URL

时间:2017-02-04 23:08:57

标签: java android

我的MainActivity中有两个按钮,这些按钮有OnLongClickListener,它们都启动另一个名为Pop.class的活动。所以一切正常。我想要的是发送一个与下一个活动中的按钮相对应的URL。

因此,当用户按下MainActivity活动中的按钮时,他会通过Pop活动上的应用程序带来,当点击Pop活动中的按钮时,他将被重定向到YouTube应用上的YouTube视频,对应于前一个按钮(此处为b26或b27)已“声明”的网址。

问题是我不知道如何使我的字符串成为Uri.parse()方法的真实URL。 我也使用了一个字符串,因为我想在每个按钮中添加不同的URL。

为此,我使用了putExtra和getExtra,但我不明白为什么字符串url不能正常工作b27按钮,所以我没有修改b26代码。 :(

这就是我向你求助的原因

这是 MainActivity 活动:

Button b26 = (Button) findViewById(R.id.b26);
    b26.setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) {
                    if (SoundBuildingOnFiire.isPlaying()) {
                        SoundBuildingOnFiire.seekTo(0);
                    } else {SoundBuildingOnFiire.start();}}});
    b26.setOnLongClickListener(
            new Button.OnLongClickListener() {
                public boolean onLongClick(View v) {
                Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                    vibrator.vibrate(1000);
                    startActivity(new Intent(MainActivity.this, Pop.class));
                    return true;}});


    Button b27 = (Button) findViewById(R.id.b27);
    b27.setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) {
                    if (SoundJackson.isPlaying()) {
                        SoundJackson.seekTo(0);
                    } else {SoundJackson.start();}}});
    b27.setOnLongClickListener(
            new Button.OnLongClickListener() {
                public boolean onLongClick(View v) {
                Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                    vibrator.vibrate(1000);
                    startActivity(new Intent(MainActivity.this, Pop.class));
                    getIntent().putExtra("SoundName", "https://www.youtube.com/");
                    return true;}});
}

这是 Pop 活动:

public class Pop extends Activity {

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.popup);

    final String SoundName = getIntent().getStringExtra("SoundName");

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels;
    int height = dm.heightPixels;
    getWindow().setLayout((int) (width * .8), (int) (height * .4));

    TextView txtLabel = (TextView)findViewById(R.id.textView);
    txtLabel.setText("En savoir plus sur ce Son");

    Button button = (Button)findViewById(R.id.youtube);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
                Intent viewIntent =
                        new Intent("android.intent.action.VIEW",
                                Uri.parse(SoundName));
                startActivity(viewIntent);
        }
    });
}

}

感谢您的时间

2 个答案:

答案 0 :(得分:0)

这是因为您没有将URL传递给POP活动,并且每次都为空。

更改

startActivity(new Intent(MainActivity.this, Pop.class));
getIntent().putExtra("SoundName", "https://www.youtube.com/");

Intent intent = new Intent(MainActivity.this, Pop.class);
intent.putExtra("SoundName", "https://www.youtube.com/");
startActivity(intent);

答案 1 :(得分:0)

对您的代码应用以下更改,它应该可以正常工作

主要活动

 b27.setOnLongClickListener(
        new Button.OnLongClickListener() {
            public boolean onLongClick(View v) {
            Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                vibrator.vibrate(1000);
                String url="https://youtube.com";
                Intent intent= new Intent(MainActivity.this,Pop.class);
                intent.putExtra("SoundName", url);
                startActivity(intent);
                return true;}});

在你的流行活动中

button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View arg0) {
            Intent viewIntent =getIntent();
               String url=viewIntent.getStringExtra("SoundName");
               Uri uri = Uri.parse(url);
               Intent intent = new Intent(Intent.ACTION_VIEW, uri);
               startActivity(intent);
    }
});