Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段中动态添加按钮_Java_Android_Android Fragments - Fatal编程技术网

Java 在片段中动态添加按钮

Java 在片段中动态添加按钮,java,android,android-fragments,Java,Android,Android Fragments,你好,我正在尝试添加一个按钮,但我一直收到以下错误: java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.LinearLayout.addView(android.view.view,android.view.ViewGroup$LayoutParams) 这是我的代码,它在常规活动中运行良好,而不是作为片段工作: @Override public View onCreateView(LayoutInflater

你好,我正在尝试添加一个按钮,但我一直收到以下错误:
java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法“void android.widget.LinearLayout.addView(android.view.view,android.view.ViewGroup$LayoutParams)

这是我的代码,它在常规活动中运行良好,而不是作为片段工作:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fav, container, false);

    lSecond = (LinearLayout) v.findViewById(R.id.lSecond);
    lThird = (LinearLayout) v.findViewById(R.id.lThird);
    return v;
}
 public void bCreate(String i)
{
    LinearLayout.LayoutParams btnParams = new LinearLayout.LayoutParams(matchParent, wrapContent);
    Button btnNew = new Button(this.getActivity());
    btnNew.setBackgroundResource(R.drawable.button);
    btnNew.setTextColor(Color.parseColor("#ffffff"));
    btnNew.setText(i);
    scale =  getResources().getDisplayMetrics().density;
    int top = (int) (5 * scale + 0.5f);
    int bot = (int) (5 * scale + 0.5f);
    if (Second < Third)
    {
        int left = (int) (10 * scale + 0.5f);
        int right = (int) (5 * scale + 0.5f);
        btnParams.leftMargin = left;
        btnParams.rightMargin = right;
        btnParams.topMargin = top;
        btnParams.bottomMargin = bot;
        lSecond.addView(btnNew, btnParams);
        Second++;
        btnNew.setOnClickListener(listen);
    }
@覆盖
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图v=充气机。充气(R.layout.fav,容器,假);
lSecond=(线性布局)v.findviewbyd(R.id.lSecond);
lThird=(线性布局)v.findViewById(R.id.lThird);
返回v;
}
公共void b创建(字符串i)
{
LinearLayout.LayoutParams btnParams=新的LinearLayout.LayoutParams(matchParent,wrapContent);
Button btnNew=新按钮(this.getActivity());
btnNew.setBackgroundResource(右可绘制按钮);
btnNew.setTextColor(Color.parseColor(#ffffff”);
b.新设文本(i);
scale=getResources().getDisplayMetrics().density;
int top=(int)(5*刻度+0.5f);
int bot=(int)(5*刻度+0.5f);
如果(第二次<第三次)
{
左整数=(整数)(10*刻度+0.5f);
右整数=(整数)(5*刻度+0.5f);
btnParams.leftMargin=左;
btnParams.rightMargin=右侧;
btnParams.topMargin=顶部;
btnParams.bottomMargin=bot;
l第二个添加视图(btnNew、BTNPARMS);
第二++;
btnNew.setOnClickListener(listen);
}

bCreate在onCreate中被调用,字符串i-是数据库中的字符串

bCreate()
被调用得太早。您试图在它有值之前访问
lSecond
。在
onCreateView()中调用
bCreate()
就在返回之前。

这可能有助于将您的模型与视图分离。这看起来像是在
onCreate
(您的模型)中生成了一组字符串。您应该根据先前创建的字符串数组(视图)在
onViewCreated
中创建一组
按钮。视图反映了模型。不要同时执行这两项操作。视图甚至早在
onCreate
时就不可用,因此NPE。调用
bCreate()
的位置在哪里?@SammyT它在onCreateYep中被调用,这就是答案,谢谢。我需要更多关注片段的生命周期/