Getting this Error
kotlin.NotImplementedError: An operation is not implemented: not implemented
I am implementing an ImageButton click listener
Requirement :- I want to perform an action on imagebutton click , but getting the above mentioned error
Correct me and also if there is any other work around to implement imagebutton click listener, do provide it , Thanks
Here is the fragment
java class
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; } }
and then the 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>
TODO()
is an inline function in Kotlin. It ALWAYS will throw NotImplementedError. See #documentation: https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-t-o-d-o.html
If you want just to mark that this fragment of code still needs work, use // TODO
. Then, the mark will be visible in TODO section, but will not throw exception.
Just remove TODO( ... )
from your onClickListener:
override fun onClick(v: View?) { // No TODO here when (v?.id) { ... } }
TODO(...)
is Kotlin function which always throws NotImplementedError
. If you want to mark something with TODO but to not throw exception - just use TODO with comments:
override fun onClick(v: View?) { //TODO: implement later when (v?.id) { ... } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With