2016-05-07 11 views
-3

classのメソッド、つまりMasterクラスを呼び出すたびに表示されるフレーズをいくつか保持するようにしました。メインアクティビティ外の文字列配列への参照を取得する

しかし、私はResources res = getResources();

を入力するときは赤でgetResources()は、そのような方法はありませんと言っていることをマークします。

代わりに、メインアクティビティに入力するとすべてがうまく見えます。

どう私はreferencestring-arrayMainので、私は作成することができmethod内部の私のMasterクラスを取得ことができますか?

これは私の文字列配列です:

<string-array name="goodMorning"> 
    <item>Good Morning folks!</item> 
     [...] 
    <item>Be beep. Be beep. %s wake up!</item> 
</string-array> 

EDIT:

これは今

public class Master extends Player { 
private String mName; 
private Context context; 


public String getmName(){ 
    return mName; 
} // Get Master's name 

public static int randInt(int min, int max) { //Get a random int between two values 

    // Usually this can be a field rather than a method variable 
    Random rand = new Random(); 

    // nextInt is normally exclusive of the top value, 
    // so add 1 to make it inclusive 
    int randomNum = rand.nextInt((max - min) + 1) + min; 

    return randomNum; 
} 


public Master(Context c){ //it's your contsructor method 
    this.context = c; 
} 


public void goodMorning() { // Get a random phrase from a String-Array and display it to the user 
    int randomNumber = randInt(0, 8); //Random Number 
    String[] arrayPhrases = context.getResources().getStringArray(R.array.goodMorning); // String-Array with 'morning phrases 
    List<String> listPhrases = new ArrayList<>(); // List 

    Collections.addAll(listPhrases, arrayPhrases); // Insert the String-Array in the List 
    String randomPhrase = listPhrases.get(randomNumber); // Get the random phrase 

    System.out.printf(randomPhrase); // Display it 
} 
} 

私のマスタークラスであり、これは私の主な活動

public class MainActivity extends AppCompatActivity { 

Master m = new Master(this); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 

m.goodMorning(); 

} 
です

問題私はm.goodMorning();と呼んだとき、それはgoodMorning()メソッドを認識しません。

+6

あなたはその方法 – njzk2

+3

にコンテキストを渡したり、[] 'そのメソッドに'文字列を渡す必要があります。 「GetResources()」が「Context」のメソッドであり、「Activity」が「Context」から継承するため、「主なアクティビティにすべてを入力すると良い」と表示されます。 – CommonsWare

+0

コードに関するヘルプが必要な場合は、Masterオブジェクトがどこでどのようにインスタンス化されるか、およびMasterクラスコードが表示されます。 – Elye

答えて

0

この方法でこれを行うことができます。

あなたMainActivity

public class MainActivity extends Activity() 
{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContextView(R.layout.yourlayout); 
      /* 
       Your operations 
      */ 

    } 
    private void createClass() 
    { 
      YourMaster yourMaster = new YourMaster(MainActivity.this); 
      yourMaster.doSomething(); 
    } 

} 

YourMaster.Class

public class YourMaster 
{ 
    private Context context; 
    YourMaster(Context _context) //it's your contsructor methot 
    { 
      this.context = _context; 
    } 
    private void doSomething() 
    { 
      context.getResources().getStringArray(R.array.goodMorning); 

      //your array is yours now. 
    } 

} 
関連する問題