2012-04-19 2 views
31

OK Я новичок в Android-разработчиках и Java, поэтому у меня возникают проблемы с методом click. Вот мой код. Ii знаю, что я должен быть заранее благодарен всем, что хочу, чтобы моя кнопка была, нажал на телефон, чтобы переключить вид макета из main.xml в xx.xmlAndroid Button 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 
      } 
     }); 
    } 
} 

Вот мой код кнопки

<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" /> 

ответ

0

использовать что-то вроде этого:

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

Осмотр здесь: Splash screen android

0

Было бы полезно знать, какой код вы пытаетесь выполнить при нажатии кнопки. У вас есть свойство onClick, установленное в вашем XML-файле, методу setLogin. Для ясности я удалю эту строку android:onClick="setLogin" и вызову метод непосредственно из вашего метода onClick().

Кроме того, вы не можете просто установить дисплей на новый XML, вам нужно, чтобы начать новую деятельность с Intent, метод что-то вроде этого было бы целесообразно

private void setLogin() { 

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

} 

Затем установите новую активность в иметь новый макет.

70

Если вы пишете, как это в Button тега в XML-файле: андроида: OnClick = "setLogin" затем

Делай так:

<?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> 

и в части кода:

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

и не нужно все это:

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

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

    } 
}); 

Проверь его один раз;

+0

istill получить ошибки вы можете показать все это в одном? – user1344259

+0

Я изменил код, посмотрю на это и попробую один раз; – alishaik786

7

Метод 1:

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

Метод 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

любезно объясните свой ответ ok для удобства всех читателей –

4

Вы должны сделать то же самое имя метода как в макет XML и Java кода.

Если вы используете android:onClick="setLogin", то вам необходимо сделать метод с тем же именем, setLogin:

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

} 

СОВЕТЫ: ​​
Не следует смешивать макет с кодом, используя тег в вашем XML ,Вместо этого переместите метод щелчка к классу с OnClickListener методом, как:

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

Сделайте макет только для разметки и не более. Это сэкономит ваше драгоценное время, когда вам понадобится рефакторинг для Supporting Multiple Screens.

-1

Есть два решения для этого являются: -

(1) не ставят OnClick в XML

(2) удалить

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

и положить

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

это будет сортировать его для вас

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

Вам просто нужно изменить xxactivity на имя вашей второй активности