web-dev-qa-db-ja.com

Android StudioとMain Activity.ktでのメンバー宣言を想定した問題

私は次のYouTubeチュートリアルを通して学ぼうとしています。私はAndroid Studio 3.1 Canaryを使用していますが、チュートリアルの同じポイントに行き詰まります。たとえば、このYouTubeチュートリアルにアクセスした場合 https://youtu.be/3RMboPhUbmg?t = 21 3:30分のマーク。

彼らがMaterialSearchView searchViewを入力しているとき; 「メンバーの宣言が必要です」という赤い下線が表示され、何度検索しても答えが見つかりません。このエラーの解決策は何ですか?ありがとう

これは、Main2Activity.ktに含まれているコードです。結果は、ツールバーとmaterialsearchviewオブジェクトを呼び出すか、知っているはずです

import Android.support.v7.app.AppCompatActivity
import Android.os.Bundle
import Android.support.v7.widget.Toolbar
import com.miguelcatalan.materialsearchview.MaterialSearchView
import kotlinx.Android.synthetic.main.activity_main2.*

class Main2Activity : AppCompatActivity () {
    **MaterialSearchView searchView;**  "expecting member declaration error"
    **Toolbar  toolbar;** "expecting member declaration error"
    Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar);
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        toolbar=(Toolbar()) findViewbyId(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
    *private void searchViewCode()
    {
        searchView=(MaterialSearchView)findViewById(R.id.search_view);
    }
}
3
wolfgang

私の場合、問題は.PDFからのコピーアンドペーストによる見えないcharでした

以下のスニペットでは、「{」と「onClick」の間に2つの文字があることに注意してください。

setOnClickListener { ​onClick(item) }

これが私の悪夢の原因です。

0
ferreiraiso

Kotlin構文ではなく、Java構文を使用してsearchViewおよびtoolbar変数を宣言しているようです。そのため、コンパイラーは宣言内容を理解できません。

したがって、宣言を次のように変更します。

var searchView: MaterialSearchView? = null
val toolbar: Toolbar = view.findViewById(R.id.toolbar) as Toolbar 

または、Kotlin Android拡張機能を使用している場合は、(ビューIDを直接使用して)そのようにツールバーを取得できるはずです):

0
erafn