ImageView selected state not displayed

In my application, I have one action (HomeActivity) and 3 fragments (I have 3 buttons). In HomeActivity, I have buttons that should have changed its state after clicking on it. When I first launch the application, I press one of this buttons, the selected state is changed (in my case, from white to green), but when I press another button, all buttons become inaccessible (all buttons are white). Can someone tell me what the problem is?

public class HomeActivity implements View.OnClickListener { private ImageView mMessageButton; private ImageView mMapButton; private ImageView mSettingsButton; private int mCurrentFragmentId = DISCOUNT; public List<ImageView> mPageItems; public int mSelectedPage = 0; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.home); init(); } private void init(){ mMessageButton = (ImageView)findViewById(R.id.message_icon); mMapButton = (ImageView)findViewById(R.id.map_icon); mSettingsButton = (ImageView)findViewById(R.id.settings_icon); mPageItems = new ArrayList<ImageView>(); mPageItems.add(mMessageButton); mPageItems.add(mMapButton); mPageItems.add(mSettingsButton); mMessageButton.setOnClickListener(this); mMapButton.setOnClickListener(this); mSettingsButton.setOnClickListener(this); } public void addPage(final DefaultHeaderFragment pDefaultFragment, final boolean isAddToBackStack){ FragmentTransaction transaction = mFragmentManager.beginTransaction(); mPageItems.get(mSelectedPage).setSelected(true); transaction.replace(R.id.f_pager, pDefaultFragment); if (isAddToBackStack) transaction.addToBackStack(null); transaction.commit(); } @Override public void onClick(View view) { switch (view.getId()){ case R.id.message_icon: mSelectedPage = 0; MessagesFragment messagesFragment = new MessagesFragment(HomeActivity.this); Bundle messageArgument = new Bundle(); messageArgument.putInt("fragmentId", mCurrentFragmentId); messagesFragment.setArguments(messageArgument); addPage(messagesFragment, true); break; case R.id.map_icon: mSelectedPage = 1; YandexMapFragment mapFragment = new YandexMapFragment(HomeActivity.this); Bundle mapArgument = new Bundle(); mapArgument.putInt("fragmentId", mCurrentFragmentId); mapFragment.setArguments(mapArgument); addPage(mapFragment, true); break; case R.id.settings_icon: mSelectedPage = 2; SettingsFragment settingsFragment = new SettingsFragment(HomeActivity.this); Bundle settingsArgument = new Bundle(); settingsArgument.putInt("fragmentId", mCurrentFragmentId); settingsFragment.setArguments(settingsArgument); addPage(settingsFragment, true); break; } } } 

home.xml

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true"> <ImageView android:id="@+id/message_icon" android:layout_width="wrap_content" android:layout_toLeftOf="@+id/map_icon" android:layout_height="wrap_content" android:layout_marginRight="@dimen/header_margin_between_icons" android:layout_centerInParent="true" android:src="@drawable/button_indicator_message_button"/> <ImageView android:id="@id/map_icon" android:layout_width="wrap_content" android:layout_toLeftOf="@+id/settings_icon" android:layout_height="wrap_content" android:layout_marginRight="@dimen/header_margin_between_icons" android:layout_centerInParent="true" android:src="@drawable/button_indicator_map_button"/> <ImageView android:id="@id/settings_icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginRight="@dimen/header_marginLeft_marginRight" android:layout_alignParentRight="true" android:src="@drawable/button_indicator_settings_button"/> </RelativeLayout> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id = "@+id/f_pager"/> </RelativeLayout> 

button_indicator_message_button

 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/message_pressed"/> <item android:state_selected="true" android:drawable="@drawable/message_pressed"/> <item android:drawable="@drawable/message_unpressed"/> </selector> 
+4
source share
1 answer

inside onClick you should call view.setSelected(true); to force the contents of the ImageView to change

+4
source

Source: https://habr.com/ru/post/1491257/


All Articles