我有一个带有文本标签的android应用,当用户按下按钮时,我想更改它(可以在myapp.kt文件中完成)。我想学习如何在常规Java文件(Simplejava.java)中修改此文本。问题是,当我尝试从Simplejava.java文件调用editText1标签时,它给出了以下错误:cannot resolve method 'getView()'
我正在使用android studio 3.2.1

myapp.kt

package com.example.don.myapp

import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.view.View
import android.widget.Button

class Connectors : AppCompatActivity() {

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

        val RunButton = findViewById<View>(R.id.button1) as Button
        val myjava = Simplejava()

        RunButton.setOnClickListener({ //When the button is pressed
            myjava.MainStart();//Calling the java file
        })
    }
}



Simplejava.java
package com.example.don.myapp;

import android.widget.EditText;

public class Simplejava {

    public void MainStart()
    {
        System.out.println("Hello");//this works

        //Following code doesn't work. it says, cannot resolve method 'getView()'
        EditText changetext = (EditText) getView().findViewById(R.id.editText1);
        changetext.setText("Hello");
    }
}

最佳答案

Simplejava.class是一个既不继承任何 Activity 也不 View 的类,它不具有名为getView()的方法。为了解决这个问题,您需要将 Activity 传递给类的构造函数或将其传递给方法,如下所示:

SimpleJava.class

package com.example.don.myapp;

import android.widget.EditText;

public class Simplejava {

public void MainStart(Activity activity)
{
    System.out.println("Hello");

    EditText changetext = (EditText) activity.findViewById(R.id.editText1);
    changetext.setText("Hello");
}
}

在myapp.kt中,用myjava.MainStart(this);代替myjava.MainStart();

10-04 23:00