このエラーを取得する
kotlin.NotImplementedError:操作が実装されていません:実装されていません
ImageButtonクリックリスナーを実装しています
要件:-imagebuttonクリックでアクションを実行したいが、上記のエラーが発生する
私を修正し、imagebuttonクリックリスナーを実装する他の回避策がある場合は、それを提供してください、ありがとう
fragment
Javaクラスです
class FragmentClass : Fragment(), View.OnClickListener {
override fun onClick(v: View?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
when (v?.id) {
R.id.back_icon -> {
Toast.makeText(activity, "back button pressed", Toast.LENGTH_SHORT).show()
activity.onBackPressed()
}
else -> {
}
}
}
override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val view: View = inflater!!.inflate(R.layout.fragment_class, container,
false)
val activity = getActivity()
var input_name = view.findViewById(R.id.input_name) as EditText
var tv_addbucket = view.findViewById(R.id.tv_addbucket) as TextView
val back_icon: ImageButton = view.findViewById(R.id.back_icon)
back_icon.setOnClickListener(this)
tv_addbucket.setOnClickListener(View.OnClickListener {
Toast.makeText(activity, input_name.text, Toast.LENGTH_SHORT).show()
})
return view;
}
}
そして、fragment_class. xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:app="http://schemas.Android.com/apk/res-auto"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent">
<RelativeLayout
Android:id="@+id/header"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:clickable="true"
Android:padding="10dp">
<ImageButton
Android:id="@+id/back_icon"
Android:layout_width="40dp"
Android:layout_height="40dp"
Android:background="#0000"
Android:focusable="true"
Android:focusableInTouchMode="true"
Android:clickable="true"
Android:src="@drawable/back_icon" />
<TextView
Android:id="@+id/tv_header"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_centerHorizontal="true"
Android:text="Add Bucket" />
</RelativeLayout>
<ScrollView
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_below="@+id/header"
Android:fillViewport="true">
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="match_parent"
Android:layout_marginTop="?attr/actionBarSize"
Android:orientation="vertical"
Android:paddingLeft="20dp"
Android:paddingRight="20dp"
Android:paddingTop="60dp">
<Android.support.design.widget.TextInputLayout
Android:id="@+id/input_layout_name"
Android:layout_width="match_parent"
Android:layout_height="wrap_content">
<EditText
Android:id="@+id/input_name"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:hint="Bucket Name"
Android:singleLine="true" />
</Android.support.design.widget.TextInputLayout>
<TextView
Android:id="@+id/tv_addbucket"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:layout_marginTop="40dp"
Android:background="@drawable/blue_stroke_background"
Android:gravity="center"
Android:padding="15dp"
Android:text="Add"
Android:textColor="@color/white" />
</LinearLayout>
</ScrollView>
</RelativeLayout>
OnClickListenerからTODO( ... )
を削除するだけです:
_override fun onClick(v: View?) {
// No TODO here
when (v?.id) {
...
}
}
_
TODO(...)
は、常にNotImplementedError
をスローするKotlin関数です。 TODOで何かをマークしたいが例外をスローしたくない場合-コメント付きでTODOを使用するだけです:
_override fun onClick(v: View?) {
//TODO: implement later
when (v?.id) {
...
}
}
_
TODO()
はKotlinのインライン関数です。常にNotImplementedErrorをスローします。 #documentationを参照してください: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-t-o-d-o.html
このコードの断片がまだ作業が必要であることをマークしたい場合は、// TODO
を使用します。その後、マークはTODOセクションに表示されますが、例外はスローされません。
これを実装しました
val extraTime = arrayListOf<String>("1 hour")
val extraTimeAdapter = CustomSpinDeliveryExtraTimeAdapter(context!!, R.layout
.simple_spinner_text_middle_down_arrow, extraTime)
spinCustomTime.adapter = extraTimeAdapter
spinCustomTime.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
以下のコードからtodoを削除した後
spinCustomTime.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onNothingSelected(parent: AdapterView<*>?) {
}
override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
}
}
私の問題を解決しました。
詳細については、このドキュメントリンクも参照してください。#documentationを参照してください。 https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-t-o-d-o.html