Android 为什么单击时不调用OnClickListner?

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

这是我的基类代码,我将这个类继承给另一个子类。从这个类中,我调用这个函数ActiveSMSPackage()。我的代码是完美的,没有任何错误,但是方法没有被调用。你们能告诉我哪里做错了吗

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

您如何知道该方法未被调用?