我必须检查是否单击了按钮。如果单击的应用程序必须执行一项任务,如果没有,则应用程序必须执行另一项任务。我试图这样做,但我没有得到任何连接错误,我已经把它放在catch块的代码末尾。
protected void onCreate(Bundle savedInstanceState) {
PracticeVO practiceObj;
try {
setTitle("Klarity");
setPrefBtn = (Button) findViewById(R.id.setPrefBtn);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_klarity_home);
/*
* asynchronous calls
*/
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
final ConnectionHelper con = new ConnectionHelper();
/*
* It will connect to DB and fetches the Practice Information
*/
if (Btnclicked == false) {
String allPracticesStr = null;
这里我设置了布尔变量'Btnclicked'为真。
setPrefBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Btnclicked=true;
Intent setPrefIntent = new Intent(KlarityHome.this,
SetPreferences.class);
startActivity(setPrefIntent);
}
});
但执行此操作后光标直接进入此处并显示“无连接”。
catch (Exception ex) {
Context context = getApplicationContext();
CharSequence text = "There is some error in application";
int duration = Toast.LENGTH_LONG;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
System.out.println("no connection");
}
}
任何人都有解决方案。
答案 0 :(得分:2)
如你所说
“单击或不单击按钮。如果单击应用程序必须执行一项任务,如果没有应用程序必须执行另一项任务” 所以,如果我是你,我将放置2个单选按钮,每个按钮都包含你想要做的任务的文本,并为他们添加一个监听器,如下所示:
radiobutton1.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
radiobutton2.setChecked(false);
}
});
radiobutton2.setOnCheckedChangeListener(new RadioButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
radiobutton1.setChecked(false);
}
});
最后,在按钮中执行您要执行的任务:
Button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
if(radiobutton1.isChecked){
//do task 1
}else{
//do task2}
}
});
答案 1 :(得分:0)
您收到NPE(NullPointerException)
,因为您在使用时尚未在代码中初始化Btnclicked
。您正在检查Btnclicked
是否为假,如
if (Btnclicked == false) {
但在检查时,Btnclicked
的值为null
,因此是NPE。
所以要摆脱这个,你只需添加
Btnclicked=true;
或
Btnclicked=false;
根据您的逻辑,在if
循环之前。
或强>
或只是将Boolean Btnclicked;
的声明替换为Boolean Btnclicked=false;
希望这有帮助。
答案 2 :(得分:0)
删除Btnclicked你不需要它。 OnClickListner
适用于您尝试做的事情。未按下按钮时要运行的代码将其置于
//When button is not pressed
setPrefBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//When button is pressed
}
});
单击按钮时要运行的代码将其放在onClick(){}