ccc_wb
2021-07-11 16:19
采纳率: 33.3%
浏览 40

动态添加布局时addview报错?

在向另外一个Activity中的LinearLayout动态添加布局的时候,程序运行到addView会闪退,并且无法添加布局

 

public void new_tv(String message){
        LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        ll = (LinearLayout) findViewById(R.id.ll_todo);
        add_tv = new TextView(this);
        
        add_tv.setLayoutParams(lparams);
        add_tv.setText(message);
        add_tv.setTextColor(getResources().getColor(R.color.white));
        
        try {
            ll.addView(add_tv);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

 

 

总代码

import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.appcompat.app.AppCompatActivity;

public class add_goal extends AppCompatActivity {
    private EditText et;
    private Button btn_send;
    private LinearLayout ll;
    private TextView add_tv;

    private String message;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.add_goal);

        et = (EditText) findViewById(R.id.input_message);
        btn_send = (Button) findViewById(R.id.btn_send);

        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                message=et.getText().toString().trim();
                new_tv(message);
                startActivity(new Intent(add_goal.this,MainActivity.class));
                finish();
            }
        });

    }



    public void new_tv(String message){
        LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
        ll = (LinearLayout) findViewById(R.id.ll_todo);
        add_tv = new TextView(this);

        add_tv.setLayoutParams(lparams);
        add_tv.setText(message);
        add_tv.setTextColor(getResources().getColor(R.color.white));

        try {
            ll.addView(add_tv);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
}
  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 帅次 2021-07-13 11:50
    已采纳

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //1、获取activity_view.xml中LinearLayout对象
    //2、也可以给LinearLayout添加@+id/,然后通过findViewById关联控件也能获取LinearLayout对象
    LinearLayout linearLayout =
    (LinearLayout)getLayoutInflater().inflate(R.layout.activity_view,null);
    //加载布局文件
    setContentView(linearLayout);
    EditText editText = new EditText(this);
    editText.setHint("请输入内容");
    linearLayout.addView(editText);
    }
    如有帮助麻烦采纳

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • vigiles 2021-07-11 19:15

    根据日志的报错,空指针。
    ll.addView(add_tv);,这个ll是null。ll = (LinearLayout) findViewById(R.id.ll_todo);返回的为null,所以,检查布局文件R.layout.add_goal.xml里是不是有R.id.ll_todo

    评论
    解决 3 无用
    打赏 举报

相关推荐 更多相似问题