2017-07-21 41 views
0

我想使用Android Studio将Android应用演示从java转换为kotlin。但我有一些错误。得到未解决的参考:setText时,将Java转换为kotlin

一些Java代码是:

public static class FileServerAsyncTask extends AsyncTask<Void, Void, String> { 
    private boolean isname=true; 
    private String name="啦啦啦"; 
    private Context context; 
    private TextView statusText; 
    Handler myhandler=new Handler(){ 
     @Override 
     public void handleMessage(Message msg) { 
      switch (msg.what){ 
       case 10: 
        statusText.setText("XXXXX"); 
      } 
     } 
    }; 

    /** 
    * @param context 
    * @param statusText 
    */ 
    public FileServerAsyncTask(Context context, View statusText) { 
     this.context = context; 
     this.statusText = (TextView) statusText; 
    } 

工作室将它们转换为

class FileServerAsyncTask 
    /** 
    * @param context 
    * * 
    * @param statusText 
    */ 
    (private val context: Context, statusText: View) : AsyncTask<Void, Void, String>() { 
     private val isname = true 
     private var name = "啦啦啦" 
     private var statusText: TextView 

     init { 
      this.statusText = statusText as TextView 
     } 

     internal var myhandler = object : Handler() { 
      override fun handleMessage(msg: Message) { 
       when (msg.what) { 
        10 -> statusText.setText("XXXXX") 
        else -> { 

        } 
       } 
      } 
     } 

但在10 -> statusText.setText("XXXXX")

有错误,我将其更改为10 -> statusText.text = "XXXX",但错误依然存在。然而,在同一个文件中这样的其他句子是可以的。

怎么了?

+0

我认为你应该完成你的else块。这是因为Kotlin处理null的方式,既然statusText不能为null,它会给你一个错误,因为它不知道else块中的内容 –

回答

0
(private val context: Context, statusText: TextView) : AsyncTask<Void, Void, String>() { 
    private val isname = true 
    private val name = "啦啦啦" 
    private val statusText: TextView 
    internal var myhandler: Handler = object : Handler() { 
     override fun handleMessage(msg: Message) { 
      when (msg.what) { 
       10 -> statusText.text = "XXXXXX" 
      } 
     } 
    } 

    init { 
     this.statusText = statusText as TextView 
    } 

    override fun doInBackground(vararg params: Void): String? { 
     return null 
    } 
} 

问题出在构造函数更改视图到textview。