Java 如何在没有静态问题的情况下在列表中使用strings.xml?
我正在Android Studio上开发一个应用程序,它将使用两种不同的语言。我为每种语言编写了两个不同的字符串。我不得不把字符串放在一个列表中,然后每天给用户随机打一个不同的通知 这是我的密码: 字符串.xmlJava 如何在没有静态问题的情况下在列表中使用strings.xml?,java,android,arrays,xml,static,Java,Android,Arrays,Xml,Static,我正在Android Studio上开发一个应用程序,它将使用两种不同的语言。我为每种语言编写了两个不同的字符串。我不得不把字符串放在一个列表中,然后每天给用户随机打一个不同的通知 这是我的密码: 字符串.xml <string-array name="notifications"> <item>No1</item> <item>No2</item> <item>No3</item>
<string-array name="notifications">
<item>No1</item>
<item>No2</item>
<item>No3</item>
<item>No4</item>
<item>No5</item>
</string-array>
类通知.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];
} }
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()是一个非静态方法,因此我不能在通知中使用它。
当我将static放在Choose中时,我不能这样做,因为getResources()也是一个非静态方法。
有什么建议吗?找到解决方案
只需创建一个对象:
Choose mchoose = new Choose();
然后这样称呼:
mchoose.getPhraseHasard()
是类的一种方法
您可以删除
getPhraseHasard
声明,并使用Context
中的getResources将逻辑放入onReceive
方法中。您还可以在getPhraseHasard
方法的输入中接收上下文
,并以静态的方式使用它。您需要一个Choose类的实例……阅读一些Java编程语言的基础知识可能会很有用。顺便提一下