Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有静态问题的情况下在列表中使用strings.xml?_Java_Android_Arrays_Xml_Static - Fatal编程技术网

Java 如何在没有静态问题的情况下在列表中使用strings.xml?

Java 如何在没有静态问题的情况下在列表中使用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>

我正在Android Studio上开发一个应用程序,它将使用两种不同的语言。我为每种语言编写了两个不同的字符串。我不得不把字符串放在一个列表中,然后每天给用户随机打一个不同的通知

这是我的密码:

字符串.xml

<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编程语言的基础知识可能会很有用。顺便提一下