【发布时间】:2016-07-22 18:15:58
【问题描述】:
一直在尝试使用ToggleButton 在我的应用程序中充当书签之类的东西。我第一次使用这个。我在onCreateView() 下声明了我的切换按钮,如下所示:
bmark = (ToggleButton) v.findViewById(R.id.bmark);
bmark.setChecked(false);
我正在尝试切换状态并显示Toast 消息!我尝试了以下方法:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
bmark.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean status;
if (bmark.isChecked()) status = true;
else status = false;
Log.w("Bmark status",String.valueOf(status));
if (status) {
bmark.setChecked(false);
Log.w("Bmark after true",String.valueOf(bmark.isChecked()));
Toast.makeText(getActivity(), "Bookmark removed!", Toast.LENGTH_SHORT).show();
} else {
bmark.setChecked(true);
Log.w("Bmark after false",String.valueOf(bmark.isChecked()));
Toast.makeText(getActivity(), "Post Bookmarked..!", Toast.LENGTH_SHORT).show();
}
}
});
每次我按下按钮时,状态最初都是“真”,尽管我已将其设置为“假”。在我打电话给setChecked(false) 之后,它也变成了假的。但是当我再次点击它时,它再次显示“true”而不是“false”
我不知道为什么会这样。我只想在每次单击时切换它。请帮帮我!在此先感谢:)
【问题讨论】:
-
仅供参考,接受的答案不是最佳解决方案,因为它需要处理布尔标志来跟踪状态。
-
答案中的状态是附加的,因为是在原始代码中,可能它用在不同的地方,所以没有什么可以优化的。
-
@MaciejSikora 如果它是
onClick()中的局部变量,它如何在不同的地方使用?你的 cmets 没有任何意义。
标签: android togglebutton