2017-04-18 1 views
0

私は2つの異なる言語になるAndroid Studioのアプリに取り組んでいます。私は各言語ごとに2つの異なる文字列を使いました。文字列をリストに入れて、毎日別の通知をユーザーに表示するためにランダムを呼び出す必要がありました。strings.xmlを静的な問題なしでリストに登録する方法は?

ここに私のコードです:

Notification.java

の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]; 

} } 

クラス

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()は静的でないメソッドなので、通知で使用することはできません。 私が静的をChooseに入れると、getResources()も非静的メソッドなのでできません。 提案がありますか?

+0

クラスを選択するインスタンスが必要です。 –

+0

Javaプログラミング言語の基本についてお読みになると便利かもしれません。 BTW [静的と非静的](https://www.google.com/search?q=java%20static%20vs%20non-static&rct=j) –

答えて

0

ソリューション

ちょうどオブジェクトを作成して下さい:

Choose mchoose = new Choose(); 

は、このような呼び出し:

mchoose.getPhraseHasard() 
0

getResourcesContextクラスのメソッドです。

getPhraseHasard宣言を削除し、メソッドに論理を設定するContextからgetResourcesを使用できます。 getPhraseHasardメソッドの入力でContextを受け取ってstaticの方法で使用することもできます。

関連する問題