0

我正在尝试将按钮添加到线性布局:

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 inalarm.xml但是我的当前contentView设置为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

我只是遇到了同样的问题。我有一个 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 回答
0

代码很好。据我所知,NullPointerException 可能来自alarmLayout。你能调试你的应用程序并放置一对中断点来确认吗?

基于此,您能否检查资源的名称是否与您的 xml 中的外观完全相同?:

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

如果警报布局不在当前视图中,我相信您需要先对其进行充气,然后才能向其添加任何视图。

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

于 2012-08-22T20:48:30.257 回答