2017-02-04 3 views
0

Ich habe zwei Schaltflächen in meiner MainActivity, diese Schaltflächen haben OnLongClickListener, und beide starten eine andere Aktivität namens Pop.class. Also alles funktioniert gut. Ich möchte eine URL senden, die der Schaltfläche in der nächsten Aktivität entspricht.Senden von URLs zwischen Aktivitäten

So wie dies, wenn der Benutzer die Schaltfläche in der MainActivity-Aktivität drücken, wird er durch die Anwendung auf die Pop-Aktivität gebracht und wenn er auf die Schaltfläche in der Pop-Aktivität klickt, wird er zu einem YouTube-Video in der YouTube App umgeleitet das entspricht der URL, die durch den vorherigen Button "deklariert" wurde (hier b26 oder b27).

Das Problem ist, dass ich nicht weiß, wie ich meine Zeichenfolge eine echte URL für die Uri.parse() -Methode machen. Auch ich habe eine Zeichenfolge verwendet, weil ich verschiedene URLs in jede Schaltfläche einfügen wollte.

Dafür habe ich putExtra und getExtra verwendet, aber ich verstehe nicht, warum string URL funktioniert nicht mit der b27-Taste, so dass ich den b26-Code nicht geändert habe. :(

Aus diesem Grund frag ich dich etwas Hilfe

Dies ist die MainActivity Aktivität:

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

Dies ist die Pop Aktivität:

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

}

Vielen Dank für Ihre Zeit

+0

Mögliches Duplikat [Wie ein Objekt von einer Android-Aktivität auf ein anderes mit Intents schicken?] (Http://stackoverflow.com/questions/2139134/how-to-send-an-object-from -eine-androiden-Aktivität-zu-einer-anderen-Nutzung-Intents) –

Antwort

0

Es passiert, weil Sie keine URL zu POP-Aktivität übergeben, und es ist immer Null.

Änderung

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

zu

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

Wenden Sie die folgenden Änderungen an Ihrem Code und es sollte

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

Und in Ihrem Pop In Hauptaktivität

arbeiten Aktivität

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