0

ボタンをlinearLayoutに追加しようとしています:

public void populateAlarmLayout() {
        Log.d("Array", alarmButtons.size() + "");
        alarmLayout = (LinearLayout)findViewById(R.id.alarmlayout);
        for(int i = 0; i < alarmButtons.size(); i++) {
            selectedButton = new Button(this);
            selectedButton.setId(i+1);
            selectedButton.setWidth(150);
            selectedButton.setHeight(150);
            selectedButton.setTextSize(10);
            selectedButton.setText(alarmButtons.get(i));
            selectedButton.setOnClickListener(new ClickListener());
            selectedButton.setOnLongClickListener(new LongClickListener());
            alarmLayout.addView(selectedButton);
        }
    }

nullpointer最後の行で例外が発生し続けますalarmLayout.addView(selectedButton)The alarmlayoutis specified in alarm.xmlbut my current contentViewis set at main_activity.xml. ここに問題があると確信していますが、修正方法がわかりません。

を使用しているPagerAdapterので、それも問題になる可能性があります。そのためのコードは次のとおりです。

private class MyPagerAdapter extends PagerAdapter {

        public int getCount() {
            return 3;
        }

        public Object instantiateItem(View collection, int position) {

            LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            int resId = 0;
            switch (position) {
            case 0:
                resId = R.layout.main;
                break;
            case 1:
                resId = R.layout.music;
                break;
            case 2:
                resId = R.layout.alarm;
                break;
            }

            View view = inflater.inflate(resId, null);
            ((ViewPager) collection).addView(view, 0);
            return view;
        }
    }
4

3 に答える 3

0

alarmlayout が現在のビューにない場合は、ビューを追加する前にそれを膨らませる必要があると思います。

alarmLayout = getLayoutInflater().inflate(R.id.alarmlayout);

于 2012-08-22T20:48:30.257 に答える
0

コードは問題ありません。そして、私が見る限り、NullPointerException は alarmLayout から来ている可能性があります。アプリをデバッグして、それを確認するために 2 つの中断ポイントを配置できますか?

これに基づいて、リソースの名前が xml に表示されているとおりであることを確認できますか?:

alarmLayout = (LinearLayout)findViewById(R.id.alarmlayout);
于 2012-08-22T21:15:02.060 に答える
0

私はちょうど同じ問題を抱えていたと思います。GUI はありましたが、Java ファイルでアクセスできませんでした。また、新しい LinearLayout を初期化してそれを実行しようとしました。

しかし、私は以前にLinearLayoutのために設定したViewGroupとIDで試しました。

私のコードは次のようになります。

ViewGroup linearLayout = (ViewGroup) findViewById(R.id.llActOver);
Button btTest = new Button(this);
btTest.setText("Test Button");
linearLayout.addView(btTest);
于 2012-12-15T21:24:44.140 に答える