Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

kotlin.NotImplementedError: An operation is not implemented: not implemented Error from ImageButton Click

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> 
like image 469
Quick learner Avatar asked May 24 '18 07:05

Quick learner


2 Answers

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.

like image 31
Cililing Avatar answered Sep 21 '22 21:09

Cililing


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) {         ...     } } 
like image 75
hluhovskyi Avatar answered Sep 23 '22 21:09

hluhovskyi