求助:如何判断RadioGroup的oncheckedChanged()是由用户触发还是系统触发的本帖最后由 vviking 于 2013-08-
求助:如何判断RadioGroup的oncheckedChanged()是由用户触发还是系统触发的
本帖最后由 vviking 于 2013-08-21 14:28:52 编辑
package com.example.radiobuttontest;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;
public class MainActivity extends Activity implements OnCheckedChangeListener {
private RadioGroup group;
//private boolean needReset = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
group =(RadioGroup) findViewById(R.id.radiogroup);
group.setOnCheckedChangeListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
protected void onResume() {
super.onResume();
//needReset = false;
group.check(R.id.btn1);
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
//needReset = true;
new AlertDialog.Builder(this).setMessage("Reset?").setNegativeButton("ok", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//reset Data
}
}).setPositiveButton("cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create().show();
}
}
两种情况:
1.当用户切换radioButton时,需要弹出dialog告知用户是否reset数据。
2.在调用onResume(),预设group.check(R.id.btn1)时,是不需要弹出dailog的。
但在这两种情况下,都会调用onCheckedChanged(),无法在其中判断什么时候该弹dialog,什么时候不弹。
求高手解救!怎么判断onCheckedChanged()是由用户操作回调的,还是group.check()回调的!!! RadioGroup
[解决办法]
无法正面回答楼主的问题。说一种解决方案吧:可以搞一个boolean变量,在onResume中赋ture,在onCheckedChanged中检查,如为true则赋成false然后什么也不干返回,为false则弹dialog。
