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

时间:2017-04-18 09:04:27

标签: java android arrays xml static

我正在使用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()也是一个非静态方法。 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

找到解决方案

只需创建一个对象:

 Choose mchoose = new Choose();

然后这样打电话:

mchoose.getPhraseHasard()

答案 1 :(得分:0)

getResourcesContext类的方法。

您可以删除getPhraseHasard声明并使用Context中的getResources将您的逻辑置于onReceive方法中。您还可以在Context方法的输入中收到getPhraseHasard,并以静态方式使用它。