I want EditText
to temporarily not gain foucs.
Scenario is : I have two EditTexts. Whenever any EditText's text is changed, I want another EditText to not to respond to user clicks until another predefined event occurs.
To achieve that I tried this :
@Override
protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
registerBroadcastReceivers();
}
// Register BroadcastReceivers
private void registerBroadcastReceivers() {
Log.d(TAG, "Registering broadcast receivers.");
// Google response receiver
googleResponseReceiver = new GoogleAPIResponseReceiver();
IntentFilter googleResponseIntentFilter = new IntentFilter(
RS_GoogleApiIntentService.ACTION_RECEIVED_GOOGLE_RESPONSE);
googleResponseIntentFilter.addCategory(Intent.CATEGORY_DEFAULT);
LocalBroadcastManager.getInstance(this).registerReceiver(
googleResponseReceiver, googleResponseIntentFilter);
}
editText1.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// Set EditText non-focusable
MyActivity.this.editText2.setFocusableInTouchMode(false);
}
});
.
.
.
// Somewhere in one function I call below function to start an IntentService.
.
.
.
// Call Google API with given URL
private void CallGoogleApiWithUrl(String url, int requestId) {
Intent intent = new Intent(this, RS_GoogleApiIntentService.class);
intent.putExtra(RS_GoogleApiIntentService.EXTRA_URL_STRING, url);
intent.putExtra(RS_GoogleApiIntentService.EXTRA_GOOGLE_API_REQUEST_ID,
requestId);
startService(intent);
}
// Broadcast receiver for Google API response
public class GoogleAPIResponseReceiver extends BroadcastReceiver {
// Enabling EditText works up to this point.
@Override
public void onReceive(Context context, Intent intent) {
// Stops working now onwards.
}
}
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
// Set EditText focusable
MyActivity.this.editText2.setFocusableInTouchMode(true);
}
Layout :
<LinearLayout
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<EditText
android:id="@+id/from_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="5dp"
android:ems="10"
android:hint="@string/from_location_hint"
android:imeOptions="actionDone"
android:imeActionLabel="Done"
android:inputType="text" >
<requestFocus />
</EditText>
<Button
android:id="@+id/use_current_button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:onClick="useCurrentLocation"
android:text="@string/use_current"
android:textAppearance="?android:attr/textAppearanceSmall" />
</LinearLayout>
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginTop="20dp"
android:contentDescription="@string/swap_button_description"
android:onClick="swapLocations"
android:scaleType="fitStart"
android:src="@drawable/swap" />
<EditText
android:id="@+id/to_location"
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:ems="10"
android:gravity="left"
android:hint="@string/to_location_hint"
android:imeOptions="actionDone"
android:imeActionLabel="Done"
android:inputType="text" >
</EditText>
<LinearLayout
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<EditText
android:id="@+id/departuretime_date"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:hint="@string/departure_date_hint"
android:inputType="datetime" >
</EditText>
<EditText
android:id="@+id/departuretime_time"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:clickable="true"
android:ems="10"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center"
android:hint="@string/departure_time_hint"
android:inputType="datetime" >
</EditText>
</LinearLayout>
<Button
android:id="@+id/pick_match_create_trip"
style="@style/big_centered_button_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:onClick="pickMatchesButtonClicked"
android:text="@string/pick_your_matches" />
<TextView
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="75dp"
android:text="@string/current_location_textlabel"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/current_location_text"
style="@style/create_trip_activity_components_style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_marginTop="5dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall" />
<ListView
android:id="@+id/places_list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:cacheColorHint="#00FFFF"
android:background="@color/white" >
</ListView>
EditText never gains focus again. Disabling focus works but enabling it again does not. I also tried using editText2.setEnabled();
method. It did not work, too.
write it in manifest file of activity, It defocus the edittext by creation activity at first time. and re gain the focus by touching on Edit text