2017-07-21 4 views
0

Androidスタジオを使用して、アンドロイドアプリのデモをjavaからkotlinに変換したいと考えています。しかし、私はいくつかのエラーがあります。未解決の参照:javaをkotlinに変換するときのsetText

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; 
    } 

Studioは

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.text = "XXXX"に変更し10 -> statusText.setText("XXXXX")

であるが、存在する。しかし、同じファイル内のこのような文は大丈夫です。

どういうところが間違っていますか?

+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 
    } 
} 

問題はコンストラクタの変更ビューからテキストビューに変更されました。

関連する問題