我正在尝试将按钮添加到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)
例外alarmlayout
alarm.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;
}
}
}}。我很确定这是问题所在,但我不知道如何解决它!
我正在使用{{1}},这也可能是问题所在。这是代码:
{{1}}
答案 0 :(得分:0)
如果alarmlayout不在当前视图中,我相信您需要先对其进行充气才能添加任何视图。
alarmLayout = getLayoutInflater().inflate(R.id.alarmlayout);
答案 1 :(得分:0)
代码很好。据我所知,NullPointerException可能来自alarmLayout。 你可以调试你的应用程序并设置一对中断点来确认吗?
基于此,您能否检查一下资源的名称是否与xml中的外观完全相同?:
alarmLayout = (LinearLayout)findViewById(R.id.alarmlayout);
答案 2 :(得分:0)
我认为我遇到了同样的问题。我有一个GUI但无法在我的java文件中访问它。我还尝试通过初始化一个新的LinearLayout来实现。
但是,我尝试使用ViewGroup和之前设置的id,用于我的LinearLayout。
我的代码如下所示:
ViewGroup linearLayout = (ViewGroup) findViewById(R.id.llActOver);
Button btTest = new Button(this);
btTest.setText("Test Button");
linearLayout.addView(btTest);