尝试使一个按钮创建其他按钮,错误

时间:2019-04-01 12:33:37

标签: android kotlin

我的计划是制作一个回收站列表视图,这是我的最佳建议,然后创建一个可单击的东西列表,例如电子邮件列表,但是我想要一个按钮来创建发送给自己的“电子邮件”,创建按钮并将它们添加到列表中。

目前,我试图理解https://www.example.com/{HostUrl}}{{^HostUrl}}https://xyz.abccdn.com/{{/HostUrl}}370x208{{OriginalImgPath}}{{^OriginalImgPath}}/statics/grey.gif{{/OriginalImgPath}}listViewadapter等。因此,我尝试通过button函数创建按钮。

欢迎任何建议或其他帮助!

到目前为止,我仍然知道如何制作简单的列表,简单的按钮,简单的onClick,尽管我仍然有些疑问,例如为什么需要布局。

谢谢!

arrayAdapter

activity_button_example.xml

package app.helloworld.dashimir.com.buttoncreate

import android.graphics.Color
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.support.constraint.ConstraintLayout
import android.view.View
import android.widget.Button
import kotlinx.android.synthetic.main.activity_button_example.*

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


    }
    fun criarBotao (view: View) {
        val button = Button(this)
        val constraintLayout = findViewById<ConstraintLayout>(R.id.constraintLayout)
        button.layoutParams = ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.WRAP_CONTENT, ConstraintLayout.LayoutParams.WRAP_CONTENT)
        button.text = "Click me"
        button.setOnClickListener(View.OnClickListener {
            button.text = "You just clicked me"
        })
        button.setBackgroundColor(Color.GREEN)
        button.setTextColor(Color.RED)
        constraintLayout.addView(button)
    }
}

Logcat

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
                                             android:layout_width="match_parent"
                                             android:id="@+id/constraintLayout"
                                             android:layout_height="match_parent">

</android.support.constraint.ConstraintLayout>

我不知道为什么将其设为null,因为我将其链接到 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.constraint.ConstraintLayout.addView(android.view.View)' on a null object reference 文件。不是吗?

1 个答案:

答案 0 :(得分:0)

对于用户上的创建按钮,请单击:

如果您使用acitivity_main布局中的约束布局ID,此代码将起作用。

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main) // This uses your Activity_main Layout
        val button = Button(this)
        button.setText("HEllo")
        val constraintLayout = findViewById<ConstraintLayout>(R.id.constraintLayout)
        val buttonlayout = ConstraintLayout.LayoutParams(ConstraintLayout.LayoutParams.MATCH_PARENT, ConstraintLayout.LayoutParams.WRAP_CONTENT)
        constraintLayout.addView(button, buttonlayout)
        button.setBackgroundColor(Color.GREEN)
        button.setTextColor(Color.RED)
        button.setOnClickListener({
            button.setText("Ok")
        })

    }
}

或者您可以使用此方法:

只需将setContentView更改为您的布局

setContentView(R.layout.btn)