I try to make a long click in EditText , but when I make a long click, I get the error below. I would like to be able to make a long click to get the Copy / Paste / Select All popup menu so that the user can paste text into the field.
Fatal Exception: android.view.WindowManager$BadTokenException: Unable to add window -- token android.view.ViewRootImpl$W@799bfc6 is not valid; is your activity running?
EditText is located in ScrollView in PopupWindow. Therefore, when an error occurs, I am currently active in the Activity with the PopupWindow open, and I make a long click on the EditText that is contained in the PopupWindow.
Gradle Settings
compileSdkVersion 25 buildToolsVersion '25.0.0' defaultConfig { applicationId 'com.accoservice.cico' minSdkVersion 17 targetSdkVersion 25 versionCode 37 versionName '4.2.6' multiDexEnabled true }
Layout containing an EditText file:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/outer_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#73000000"> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="top" android:layout_marginLeft="20dp" android:layout_marginRight="20dp" android:layout_marginTop="100dp" android:layout_marginBottom="5dp" android:background="#ffffff" android:orientation="vertical"> <TextView android:id="@+id/title" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="5dp" android:layout_marginTop="15dp" android:singleLine="true" android:text="@string/note_msg" android:textColor="#62CCFE" android:textSize="18sp" /> <View android:layout_width="fill_parent" android:layout_height="2dp" android:layout_marginBottom="5dp" android:layout_marginTop="10dp" android:background="#62CCFE" /> <ScrollView android:id="@+id/sv_resolution_note" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_marginTop="5dp"> <EditText android:id="@+id/et_note_msz" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_above="@+id/view" android:layout_alignParentTop="true" android:scrollbars="vertical" android:focusable="true" android:gravity="left" android:maxLines="20" android:hint="@string/write_note" android:inputType="textFilter|textMultiLine|textCapSentences" android:singleLine="false" android:textIsSelectable="true" android:enabled="true" android:longClickable="true" /> </ScrollView> <View android:id="@+id/view" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_above="@+id/send_note" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:background="@android:color/darker_gray" /> <Button android:id="@+id/send_note" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_above="@+id/viewss" android:layout_gravity="center" android:background="@color/white" android:text="@string/add_note" /> <View android:id="@+id/viewss" android:layout_width="fill_parent" android:layout_height="1dp" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:layout_alignParentStart="true" android:background="@android:color/darker_gray" /> </LinearLayout> </LinearLayout>
Display window:
@Override public void onClick(View v) { noteDialog(getResources().getString(R.string.laborentryresolutionstart), tv_labor_entry_resolution_start); } public void noteDialog(String noteTitle, final TextView tv_resolution_note) { LayoutInflater layoutInflater = (LayoutInflater) getBaseContext().getSystemService(LAYOUT_INFLATER_SERVICE); final View popupView; popupView = layoutInflater.inflate(R.layout.resolution_note, null); TextView title = (TextView) popupView.findViewById(R.id.title); title.setText(noteTitle); final EditText editText = (EditText) popupView.findViewById(R.id.et_note_msz); final PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true); popupWindow.update(); popupWindow.setFocusable(true); popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); editText.setEnabled(false); editText.setEnabled(true); editText.setFocusable(true); editText.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) {
source share