2012-04-19 39 views
31

OK Tôi mới dùng android dev và Java vì vậy tôi gặp vấn đề với phương pháp nhấp chuột ở đây là mã của tôi Tôi biết tôi phải cảm ơn trước tất cả những gì tôi muốn làm là khi nhấp vào điện thoại để chuyển đổi các quan điểm bố trí từ main.xml để xx.xmlNút 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 
      } 
     }); 
    } 
} 

đây là mã nút của tôi

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

Trả lời

0

Sử dụng một cái gì đó như thế này:

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

Nhìn qua đây: Splash screen android

0

Sẽ hữu ích nếu bạn biết mã nào bạn đang cố gắng thực thi khi nhấn nút. Bạn đã có thuộc tính onClick được đặt trong tệp xml của bạn thành một phương thức có tên là setLogin. Để rõ ràng, tôi sẽ xóa dòng này android:onClick="setLogin" và gọi phương thức trực tiếp từ bên trong phương thức onClick() của bạn.

Ngoài ra, bạn không thể chỉ cần đặt màn hình để một XML mới, bạn cần để bắt đầu một hoạt động mới với Intent, một phương pháp như thế này sẽ là thích hợp

private void setLogin() { 

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

} 

Sau đó thiết lập các Hoạt động mới có bố cục mới.

70

Nếu bạn viết như thế này trong thẻ Button trong file xml: android: onClick = "setLogin" sau đó

Làm như thế này:

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

và Mã phần:

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

và không cần tất cả điều này:

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

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

    } 
}); 

Kiểm tra lại một lần;

+0

istill gặp lỗi bạn có thể hiển thị tất cả trong một? – user1344259

+0

Tôi đã thay đổi mã này và thử một lần; – alishaik786

7

Phương pháp 1:

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

Cách 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

vui lòng giải thích câu trả lời của bạn ok để dễ dàng cho tất cả người đọc –

4

Bạn cần phải thực hiện các tên cùng một phương pháp cả trong cách bố trí XML và mã java.

Nếu bạn sử dụng android:onClick="setLogin" sau đó bạn cần phải thực hiện một phương pháp có cùng tên, setLogin:

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

} 

LỜI KHUYÊN:
Không trộn lẫn bố cục với mã bằng cách sử dụng thẻ trong XML của bạn .Thay vào đó, hãy di chuyển phương thức nhấp vào lớp học của bạn với phương thức OnClickListener như:

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

Tạo bố cục chỉ để bố cục và không còn nữa. Nó sẽ tiết kiệm thời gian quý báu của bạn khi bạn cần phải tái cấu trúc cho Supporting Multiple Screens.

-1

Có hai giải pháp cho việc này là: -

(1) không đặt onClick trong xml

(2) loại bỏ

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

và đưa

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

này sẽ sắp xếp nó cho bạn

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

Bạn chỉ cần sửa đổi xxactivity đến tên của hoạt động thứ hai của bạn