我正在使用Android Studio上的应用程序,该应用程序将使用2种不同的语言。我为每种语言做了两个不同的字符串。我不得不把字符串放在一个列表中,然后每天给用户调用一个Random来显示不同的通知。
这是我的代码:
strings.xml
<string-array name="notifications">
<item>No1</item>
<item>No2</item>
<item>No3</item>
<item>No4</item>
<item>No5</item>
</string-array>
班级Choose.java
public class Choose extends AppCompatActivity {
String[] conseils=getResources().getStringArray(R.array.notifications);
public String getPhraseHasard() {
Random random = new Random();
int hasard = random.nextInt(conseils.length);
return conseils[hasard];
} }
班级Notification.java
public class Notification extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
.....
NotificationCompat.Builder myNotifBuilder = new NotificationCompat.Builder(context);
myNotifBuilder.setSmallIcon(R.mipmap.ic_mind);
myNotifBuilder.setContentTitle("A tip");
myNotifBuilder.setContentText(Choose.getPhraseHasard());
myNotifBuilder.setStyle(new NotificationCompat.BigTextStyle().bigText(Choose.getPhraseHasard()));
myNotifBuilder.setAutoCancel(true);
notifManager.notify(goOn, myNotifBuilder.build());
} }
我的问题: getPhraseHasard()是一个非静态方法,所以我不能在Notification中使用它。 当我在选择中放置静态时,我不能,因为getResources()也是一个非静态方法。 有什么建议吗?
答案 0 :(得分:0)
找到解决方案
只需创建一个对象:
Choose mchoose = new Choose();
然后这样打电话:
mchoose.getPhraseHasard()
答案 1 :(得分:0)
getResources是Context类的方法。
您可以删除getPhraseHasard
声明并使用Context
中的getResources将您的逻辑置于onReceive
方法中。您还可以在Context
方法的输入中收到getPhraseHasard
,并以静态方式使用它。