为了账号安全,请及时绑定邮箱和手机立即绑定

Java到Kotlin以不同的方法访问类特定的变量

Java到Kotlin以不同的方法访问类特定的变量

呼唤远方 2021-04-30 13:14:04
我来自Objective-C背景。我必须以编程方式创建对象,因此尝试在Java和Kotlin中对其进行探索。在Objective-C中,我们曾经在.h文件中声明实例变量并在.m文件中的任何位置访问它们,是否有类似的接口在其中,我们在某处声明变量和对象类型,然后在我们的kotlin类中对其进行访问?我试图声明一个变量,我可以在一个类(例如MainActivity)内部的不同方法中访问该变量。在Java中,它可以正常工作,但是在Kotlin中,我想在不初始化的情况下很难声明它。需要帮忙。//Here is the Java Code that works fine.public class MainActivity extends AppCompatActivity {    **LinearLayout box;**    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        **box = new LinearLayout(this);**    }    private void SampleMethod () {        **box.setBackgroundColor(Color.RED);**     }   }如果我尝试在Kotlin中实现此目标,则会使用stacktrace中提供的ERROR停止应用程序。//Here is Kotlin code that is stopping the app. class MainActivity : AppCompatActivity() {   **val sample = TextView(this)** // I need to declare variable here.   override fun onCreate(savedInstanceState: Bundle?) {    super.onCreate(savedInstanceState)    setContentView(R.layout.activity_main)    **sample.setText("Hello!")**    MainContainer.addView(sample)   } fun Test() {    **sample.setBackgroundColor(Color.RED)** }}
查看完整描述

1 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

class MainActivity : AppCompatActivity() {



   val sample = TextView(this)

这是行不通的-您的Android书籍或教程应说明原因。实例化AppCompatActivity使用构造函数以获取的完整实例是不够的Activity。


通常,最好等到onCreate尝试以编程方式实例化视图之前,最好这样做。


class MainActivity : AppCompatActivity() {


    lateinit var myTextView: TextView


    override fun onCreate(savedInstanceState: Bundle) {

        //instantiate myTextView here if you must 

    }

}


查看完整回答
反对 回复 2021-05-12
  • 1 回答
  • 0 关注
  • 192 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信