gpt4 book ai didi

java - 无法进行静态引用/无法在静态上下文中使用 "this"困境

转载 作者:行者123 更新时间:2023-12-01 13:13:54 28 4
gpt4 key购买 nike

我正在尝试创建一个 Android 应用程序来完成以下任务:它通过短信向一组收件人(存储在数组中的数字)发送初始调查问题。然后,对于收到的每个响应,它都会向该参与者发送该系列中的下一个问题。这是我做过的第一个 Android 开发,如果这是显而易见的,我深表歉意!

我在 MainActivity 中定义了 sendQuestion 函数:

public void sendQuestion(String number, int question)
{
//necessary setup for sending a text message
SmsManager sms = SmsManager.getDefault();
PendingIntent sentPI;
String SENT = "SMS_SENT";
sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);

//actually sends the text message
sms.sendTextMessage(number, null, questions[question], sentPI, null);
}

然后我尝试从 SmsReceiver 类中调用 sendQuestion 函数:

public class SmsReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent)
{
for (int i=0;i<MainActivity.numbers.length;i++)
{
MainActivity.sendQuestion(MainActivity.numbers[i], MainActivity.survey_location[i]);
}
}
}

我遇到的第一个错误是我无法从 MainActivity 类型中对非静态方法 sendQuestion 进行静态引用。作为修复,我想尝试将 sendQuestion 更改为静态方法。但随后我在 sendQuestion 内的 sendPI 上收到错误,无法在静态上下文中使用 this

有没有一种方法可以获取 MainActivity 的上下文或保持 sendQuestion 非静态,而不与我不更改的任何一个发生冲突?将来避免此类问题的最佳方法是什么?

最佳答案

推荐的方法是在不同的类中使诸如 sendQuestion 之类的实用方法成为静态,并将上下文作为参数发送给该方法。这样您就可以从任何地方访问此方法,只需将上下文作为附加参数传递给该方法即可。

关于java - 无法进行静态引用/无法在静态上下文中使用 "this"困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22616187/

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