2017-02-04 5 views
0

У меня есть две кнопки в моей MainActivity, эти кнопки имеют OnLongClickListener, и они оба запускают другое действие под названием Pop.class. Так что все работает нормально. Я хочу отправить URL-адрес, соответствующий кнопке в следующем действии.Отправка URL-адресов между действиями

Так, когда пользователь нажимает кнопку в действии MainActivity, он прикладывает приложение к активности Pop, и при нажатии на кнопку в поп-активности он будет перенаправлен на видео YouTube в приложении YouTube. которые соответствуют URL-адресу, который был «объявлен» предыдущей кнопкой (здесь b26 или b27).

Проблема в том, что я не знаю, как сделать мою строку истинным URL-адресом для метода Uri.parse(). Также я использовал строку, потому что я хотел поместить другой 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;}}); 
} 

Это Поп активность:

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); 
     } 
    }); 
} 

}

Спасибо за ваше время

+0

Возможного дубликат [Как отправить объект из одного Android деятельности на другие, используя намерения?] (Http://stackoverflow.com/questions/2139134/how-to-send-an-object-from -он-андроид-активность-к-другому-используя-намерения) –

ответ

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); 
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); 
    } 
}); 
Смежные вопросы