gpt4 book ai didi

java - Android中的面向对象编程

转载 作者:行者123 更新时间:2023-12-01 14:12:21 24 4
gpt4 key购买 nike

我想在另一个类的一个类中使用一种方法,我的代码没有任何错误,但是当我运行该项目时,我收到“不幸的是项目*已停止”错误。当我复制方法而不是创建对象等时,我运行程序没有任何问题,任何人都可以告诉我可能是什么问题吗?

public void onClick(View arg0) {

String p = "+989357835774";
String m = "test";
SendSMS sms = new SendSMS();
sms.sms(p, m);
}


public class SendSMS extends Activity {

public void sms (String phonno , String Message){
PendingIntent pi = PendingIntent.getActivity(this, 0,
new Intent(this, SendSMS.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phonno, "+9891100500", Message , pi, null);
}
}

这些是我的错误:

08-23 19:31:00.065: E/AndroidRuntime(9985): FATAL EXCEPTION: main
08-23 19:31:00.065: E/AndroidRuntime(9985): java.lang.NullPointerException
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:127)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.content.ComponentName.<init>(ComponentName.java:75)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.content.Intent.<init>(Intent.java:3655)
08-23 19:31:00.065: E/AndroidRuntime(9985): at com.example.finalproject3.SendSMS.sms(SendSMS.java:15)
08-23 19:31:00.065: E/AndroidRuntime(9985): at com.example.finalproject3.Pizza$1$2.onClick(Pizza.java:53)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.view.View.performClick(View.java:4101)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.view.View$PerformClick.run(View.java:17078)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.os.Handler.handleCallback(Handler.java:615)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.os.Handler.dispatchMessage(Handler.java:92)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.os.Looper.loop(Looper.java:155)
08-23 19:31:00.065: E/AndroidRuntime(9985): at android.app.ActivityThread.main(ActivityThread.java:5485)
08-23 19:31:00.065: E/AndroidRuntime(9985): at java.lang.reflect.Method.invokeNative(Native Method)
08-23 19:31:00.065: E/AndroidRuntime(9985): at java.lang.reflect.Method.invoke(Method.java:511)
08-23 19:31:00.065: E/AndroidRuntime(9985): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1028)
08-23 19:31:00.065: E/AndroidRuntime(9985): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:795)
08-23 19:31:00.065: E/AndroidRuntime(9985): at dalvik.system.NativeStart.main(Native Method)

最佳答案

您的 SendSMS 类是一个 Activity。您永远不应该自己实例化 Activity,因为那时不会调用任何生命周期方法。让系统启动您的 Activity (使用 Intent )。

如果您只需要实例化一个普通类,则不要继承Activity

要访问仅在 ActivityContext 中找到的方法,请在类构造函数中传入有效的 Context

假设您的 onClick 方法是在 Activity 中定义的:

public void onClick(View arg0) {

String p = "+989357835774";
String m = "test";
SendSMS sms = new SendSMS(this);
sms.sms(p, m);
}


public class SendSMS {

private Context context;

public SendSMS(Context context) {
this.context = context;
}

public void sms (String phonno , String Message){
PendingIntent pi = PendingIntent.getActivity(context, 0,
new Intent(context, YourActivity.class), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phonno, "+9891100500", Message , pi, null);
}
}

关于java - Android中的面向对象编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18405599/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com