2016-04-18 14 views
0

私がしようとしているのは、すべてのボタンのすべてのIDをアンドロイドの断片にすることです。現在、私は "PA1"、 "PA2"、 "PA3"というIDを実行するforループを持っています....私は任意のIDを使用できるようにしたいが、それでもJavaコードでそれを変更したい。AndroidのボタンのIDを取得する

これは、これが作業を行いますが、私はそれの後に数字で一般的なIDを使用する必要がありますする必要はいけない私が今持っているもの

TextView tv; 
View viewHold; 

Button[] btns; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.pri_all_view, container, false); 
    viewHold = view; 

    int resId=-1; 
    int c=0; 
    while(resId != 0){ 
     resId = getResources().getIdentifier("PA" + (c+1), "id", MainActivity.PACKAGE_NAME); 
     c++; 
    } 
    btns = new Button[c-1]; 

    for(int i=0;i < btns.length; i++){ 
     resId = getResources().getIdentifier("PA" + (i+1), "id", MainActivity.PACKAGE_NAME); 
     btns[i] = (Button) view.findViewById(resId); 
     btns[i].setTransformationMethod(null); 
     btns[i].setOnClickListener(this); // calling onClick() method 
    } 
    return view; 
    } 
.... 

です。

+0

あなたはwhileループとのループを組み合わせることができませんか? –

+0

ArayListオブジェクトでsetOnClickListenerを使用したとき、私はnullポインタを取得します。 –

+0

とにかく、あなたは何を探していますか?あなたは現在のレイアウトのすべてのボタンのリストを取得したいですか? –

答えて

0

ボタンはすべて同じビューグループ内にあるものとします。そうでなければ、サブビューを処理するために再帰呼び出しを行う必要があります。

ボタンの参照やボタンIDの参照を保存するかどうかは不明です。私がこの質問を読んで、ボタンIDが必要だと思います。

フィールド変数List<Integer>( "buttonIDs"という名前の)フィールド変数を宣言します。あなたのonCreateViewで次に

、:

ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.pri_all_view, container, false); 

for (int i=0; i < rootView.getChildCount(); i++) { 
    View v = rootView.getChildAt(i); 
    if (v instanceof Button) { 
     buttonIDs.add(v.getId()); 
    } 
} 

あなたのIDを使用する場合:あなただけのArrayListを使用している場合

for (int id : buttonIDs) { 
    Button btn = (Button)rootView.findViewById(id); 
} 
関連する問題