2016-11-13 2 views
1

Ich habe den folgenden Code unten innerhalb onCreate (das funktioniert):Android setOnClickListener Absicht ändern putExtra

mybutton.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View view){ 
      try{ 
       Intent myIntent = new Intent(view.getContext(), WebView.class); 
       myIntent.putExtra("choice", buttonclick_url); 
       startActivityForResult(myIntent, 0);  
      } catch (Exception e) {} 
     } 
    }); 

buttonclick_url enthält die URL auf der WebView-Klasse zu laden. Ich möchte, dass diese URL veränderbar ist, abhängig von bestimmten Dingen, die passieren. Ich kann jedoch nichts in onClick deklarieren, ohne sie als 'final' zu setzen, was dann nicht geändert werden kann, da alle diese während der onCreate-Methode initialisiert und gesetzt werden.

Gibt es eine Möglichkeit, die buttonclick_url veränderbar zu machen, so dass ich jede gewünschte URL laden kann, auch nachdem die Schaltfläche in onCreate initialisiert wurde?

Jede Hilfe wird sehr geschätzt. Vielen Dank!

+1

Warum nicht eine Funktion, die die URL zurückgeben würde? –

+0

Wenn Sie es dann nur globale Variable machen können und Ihr Problem wird behoben werden. –

+0

hmm, das klingt nach einer genialen Idee. Ich werde es testen und mit meinen Ergebnissen zurückkehren! Danke für die Richtung! – publicknowledge

Antwort

1

Natürlich können Sie eine globale Variable verwenden können aber ich denke, es ist besser, ein Verfahren zu verwenden, so dass Ihre endgültige Code wie etwas auf die ähnlich aussehen Snippet:

Offensichtlich, wenn Sie diese Methode nur für diese Schaltfläche verwenden, müssen Sie kein Argument cont übergeben aining die tag.

Hier ist das Beispiel mit einem globalen variabile

public class MainActivity extends AppCompatActivity { 
    private string MyUrl; 


    mybutton.setOnClickListener(new View.OnClickListener(){ 
    public void onClick(View view){ 
     try{ 
      Intent myIntent = new Intent(view.getContext(), WebView.class); 
      myIntent.putExtra("choice", MyUrl); 
      startActivityForResult(myIntent, 0);  
     } catch (Exception e) {} 
     } 
    }); 

} 

Hoffe, es hilft!

+0

beste Antwort, da es Funktionsaufruf + globale Variable in Code enthält – publicknowledge

+0

@publicknowledge Dank Kumpel :) – Sid

0

So etwas

public class Main2Activity extends AppCompatActivity implements View.OnClickListener{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main2); 

    mybutton.setOnClickListener(this); 
} 

@Override 
public void onClick(View view) { 
    try{ 
     Intent myIntent = new Intent(view.getContext(), WebView.class); 
     //do anything with url 
     myIntent.putExtra("choice", buttonclick_url); 
     startActivityForResult(myIntent, 0); 
    } catch (Exception e) {} 
} 

}

Verwandte Themen