Android 为什么单击时不调用OnClickListner?
这是我的基类代码,我将这个类继承给另一个子类。从这个类中,我调用这个函数ActiveSMSPackage()。我的代码是完美的,没有任何错误,但是方法没有被调用。你们能告诉我哪里做错了吗Android 为什么单击时不调用OnClickListner?,android,oop,methods,Android,Oop,Methods,这是我的基类代码,我将这个类继承给另一个子类。从这个类中,我调用这个函数ActiveSMSPackage()。我的代码是完美的,没有任何错误,但是方法没有被调用。你们能告诉我哪里做错了吗 public class PrepaidSMSBase extends Activity { private String smsNumber = ""; private String smsPackageName; private String smsPrice; private String smsTit
public class PrepaidSMSBase extends Activity {
private String smsNumber = "";
private String smsPackageName;
private String smsPrice;
private String smsTitle;
private String smsText;
public PrepaidSMSBase(){}
public void setSmsPackageInformation(String smsTitle, String smsPackageName, String smsPrice, String smsNumber, String smsText)
{
this.smsTitle = smsTitle;
this.smsPackageName = smsPackageName;
this.smsPrice = smsPrice;
this.smsNumber = smsNumber;
this.smsText = smsText;
}
public void activeSMSPackage()
{
try
{AlertDialog.Builder builder = new AlertDialog.Builder(PrepaidSMSBase.this);
builder.setTitle(smsTitle);
builder.setMessage("Are you sure you want to active" + PrepaidSMSBase.this.smsPackageName + "in RS: " +
PrepaidSMSBase.this.smsPrice);
builder.setPositiveButton("Activate", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", smsText);
startActivity(intent);
Toast.makeText(getApplicationContext(), "Please click send button to activate desire Package", Toast.LENGTH_LONG).show();
}
});
}catch (ActivityNotFoundException e){
e.printStackTrace();
}
}
子类代码为:
public class SMSCheckClass extends PrepaidSMSBase implements View.OnClickListener{
Button checkButton;
public SMSCheckClass(){
setSmsPackageInformation("Test 1","Some Thing","50","660","Sub");
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.checksms);
checkButton = (Button)findViewById(R.id.chkBtn);
checkButton.setOnClickListener(this);
}
@Override
public void onClick(View v)
{
activeSMSPackage();
}
首先,您应该在activeSMSPackage中显示您的对话框,请在该方法中添加以下代码:
builder.show()
使用此代码
{AlertDialog.Builder builder = new AlertDialog.Builder(PrepaidSMSBase.this);
builder.setTitle(smsTitle);
builder.setMessage("Are you sure you want to active" + PrepaidSMSBase.this.smsPackageName + "in RS: " +
PrepaidSMSBase.this.smsPrice);
builder.setPositiveButton("Activate", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", smsText);
startActivity(intent);
Toast.makeText(getApplicationContext(), "Please click send button to activate " + PrepaidSMSBase.this.smsPackageName, Toast.LENGTH_LONG).show();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
您只需在
AlertDialog
的末尾添加builder.show()
,因为您的函数是在AlertDialog
中编写的,而show()
方法用于显示AlertDialog您如何知道该方法未被调用?