2017-01-21 10 views
0

私は単純なアプリを作ろうとしています。
私はその行に1つの行と7つのボタンを持つテーブルを持っています。
私は2次元配列は必要ないと知っていますが、私はそれを使いたいと思います。
私は後でそれを非常に簡単に拡張することができます。ボタンIDを取得するためにgetResources()。getIdentifierを使用する方法?

私が試してみて、ボタンからリソースIDを取得するために

int resID = getResources().getIdentifier("button" + i + h, "button", getPackageName()); 

を使用しています。
私のボタンの名前は "button00、button01、button02"(正確にはR.javaにあります)
数値はそれぞれ行と列を表します 私はこの前にこれを使っているのを見ましたが、私はそれが仕事を得ることはできない理由。

ここではMain_Activity

public class MainActivity extends Activity implements View.OnClickListener { 

lights mlights = new lights(1, 7); 
Button Button[][] = new Button[mlights.numRows][mlights.numCol]; 


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

} 


@Override 
public void onClick(View v) { 

}} 

用ライトクラスの私のコード

public class lights extends Activity implements OnClickListener { 
public int numRows; 
public int numCol; 


public lights(int rows, int col) { 
    numRows = rows; 
    numCol = col; 
} 


public void createButtonListeners(Button[][] button) { 
    for (int i = 0; i < numRows; i++) { 
     for (int h = 0; h < numCol; h++) { 
      int resID = getResources().getIdentifier("button" + i + h, "button", getPackageName()); 
      button[i][h] = (Button) findViewById(resID); 
      button[i][h].setOnClickListener((View.OnClickListener) this); 
      Toast.makeText(getBaseContext(), "Made listener", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 


public void reset(Array buttons[][]) { 
    for (int r = 0; r < numRows; r++) { 
     for (int c = 0; c < numCol; c++) { 

      //havnt got this far 
     } 

    } 

} 


public int wasButtonPressed() { 
    for (int row = 0; row < numRows; row++) { 


    } 

    return 0; 
} 

@Override 
public void onClick(DialogInterface dialog, int which) { 

}} 

コードである私が持っていますコードを入力するとエラーは発生しませんが、実行されません。
可能な方法で私を修正してください。

+0

[Androidの文字列からリソースIDを取得していますか?](http://stackoverflow.com/questions/4427608/android-getting-resource-id-from-string) –

答えて

1

IDを取得しようとしている場合、2番目の引数は"id"です。

あなたはそれらが存在しないので、あなたはまた、とにかく活動を延長するべきではありません、あなたのライトの活動に間違ってクリックリスナーを(実装

R.id値、ないR.button値を取得しようとしているが、それは無関係ですあなたの質問へのあなたの現在のコードが動作しない場合は...ただ、驚かないでください)

ヒント:このpublic lights(Context c, int rows, int col)を試してみて、そのContextあなたのリソースを作成するために、または多分あなたがしたいsetButtons(Button[][] buttons)メソッドを使用してc.getResourcesを使用アクティビティからの呼び出し(それはfindViewByIdと呼ぶことができる唯一の場所です)

+0

申し訳ありませんが、私はR.idを持っていました議論として。私は可能な解決策としてR.buttonに変更しました –

+0

だから...回答はうまくいきませんか? –

+0

それは動作しませんでした –

関連する問題