2012-04-19 13 views
31

OK Sono nuovo per Android Dev e Java, quindi ho problemi con il metodo click. Ecco il mio codice. So che devo essere vicino grazie in anticipo tutto quello che voglio che il mio pulsante sia quando è cliccato sul telefono per passare alla visualizzazione Layout da main.xml a xx.xmlPulsante Android Onclick

package my.project; 

import android.app.Activity; 
import android.os.Bundle; 

import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class ExperiencerlActivity extends Activity { 
    /** Called when the activ`enter code here`ity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);  
     Button button = (Button) findViewById(R.id.button1); 

     button.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 
} 

Ecco il mio codice tasto

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/linearLayout1" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="56dp" 
    android:onClick="setLogin" 
    android:text="Login" /> 

risposta

0

usare qualcosa di simile a questo:

public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(new Intent("com.droidnova.android.splashscreen.MyApp")); 
     } 

Guarda qui: Splash screen android

0

Sarebbe utile sapere quale codice si sta tentando di eseguire quando si preme il pulsante. Hai la proprietà onClick impostata nel tuo file xml in un metodo chiamato setLogin. Per chiarezza, vorrei eliminare questa riga android:onClick="setLogin" e chiamare il metodo direttamente dal tuo metodo onClick().

Inoltre non si può semplicemente impostare la visualizzazione di un nuovo XML, è necessario avviare una nuova attività con l'intento, un metodo di qualcosa come questo sarebbe opportuno

private void setLogin() { 

Intent i = new Intent(currentActivity.this, newActivity.class); 
startActivty(i); 

} 

quindi impostare la nuova attività di avere il nuovo layout.

70

Se si scrive come questo nel tag Button in file xml: Android: onClick = "setLogin" poi

fare in questo modo:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<Button 
    android:id="@+id/button1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/btn" 
    android:onClick="onClickBtn" /> 

</LinearLayout> 

e nel Codice parte:

public class StartUpActivity extends Activity 
{ 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);  
    } 

    public void onClickBtn(View v) 
    { 
     Toast.makeText(this, "Clicked on Button", Toast.LENGTH_LONG).show(); 
    } 
} 

e non è necessario tutto questo:

Button button = (Button) findViewById(R.id.button1); 
button.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     // TODO Auto-generated method stub 

    } 
}); 

Controllare una volta;

+0

istill ottengono errori si può mostrare tutto in uno? – user1344259

+0

Ho cambiato il codice vedere questo e provare una volta; – alishaik786

7

Metodo 1:

public void onClick(View v) { 
      Intent i = new Intent(currentActivity.this, SecondActivity.class); 
     startActivty(i); 
     } 

Metodo 2:

Button button = (Button) findViewById(R.id.mybutton); 
button.setOnClickListener(new OnClickListener() { 

    public void onClick(View v) { 
     Toast.makeText(this, "Button Clicked", Toast.LENGTH_LONG).show(); 

    } 
}); 
+0

gentilmente spiega la tua risposta ok per facilità di tutti i lettori –

4

È necessario fare lo stesso nome del metodo sia in XML layout e codice Java.

Se si utilizza android:onClick="setLogin" allora avete bisogno di fare un metodo con lo stesso nome, setLogin:

// Please be noted that you need to add the "View v" parameter 
public void setLogin(View v) { 

} 

UN CONSIGLIO:
Non mescolare disposizione con codice utilizzando tag nel tuo XML .Invece, spostare il metodo click per la classe con OnClickListener metodo come:

Button button = (Button) findViewById(R.id.button1); 
button.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
    // TODO Auto-generated method stub 
    } 
}); 

fare un layout solo per il layout e non di più. Risparmierà il tuo tempo prezioso quando devi refactoring per Supporting Multiple Screens.

-1

Ci sono due soluzioni per questo sono: -

(1) non mettere onClick in XML

(2) rimuovere

button.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
      // TODO Auto-generated method stub 
    } 
}); 

e mettere

public void setLogin(View v) { 
    // Your code here 
} 
0

questo ordinerà per voi

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

    Button but1=(Button)findViewById(R.id.button1); 

    but1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 

      Intent int1= new Intent(MainActivity.this,xxactivity.class); 
      startActivity(int1); 
     } 
    }); 
} 

Hai solo bisogno di modificare la xxactivity al nome della vostra seconda attività