Bildansicht ausgewählten Zustand nicht angezeigt
In meiner Anwendung habe ich eine Aktivität (HomeActivity) und 3 Fragmente (Also ich habe 3 Tasten). In HomeActivity ich habe buttons sollte verändert seinen Zustand nach Klick auf es. Beim ersten ausführen der Anwendung, die ich drücken Sie diese Taste ausgewählten Status geändert (in meinem Fall weiß auf grün) aber wenn ich drücken Sie eine andere Taste alle Tasten kommen nicht ausgewählt (alle Tasten ist weiß). Könnte mir jemand sagen, was ist das problem hier?
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>
Du musst angemeldet sein, um einen Kommentar abzugeben.
innerhalb der
onClick
sollten Sie rufenview.setSelected(true);
um zu erzwingen, den Inhalt derImageView
zu ändern