2017-07-21 51 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。