所以我正在做一個應用程序,我試圖使用AlertDialog在PLC上編寫變量。我想讓它每次單擊按鈕時var都會增加1.它幾乎可以工作,而不是隻執行一次。所以當我點擊加速按鈕時,它會增加,但如果再次點擊它,它不會再次增加。如果我然後選擇減速按鈕,它會減少1,(如它的假設),但再一次,如果再次點擊按鈕它將不會再次執行。我對這種編程非常陌生。任何幫助將不勝感激,但!從AlertDialog寫入變量
public void ShowPopUpMenus(View v) {
final AlertDialog.Builder sayWindows = new AlertDialog.Builder(WritesActivity.this);
sayWindows.setPositiveButton("Speed Up", null);
sayWindows.setNegativeButton("Close", null);
sayWindows.setNeutralButton("speed Down", null);
//sayWindows.setAdapter(listWords, null);
//sayWindows.setView(saySomething);
sayWindows.setTitle(" Machine Speed"); //Title!
final AlertDialog mAlertDialog = sayWindows.create();
mAlertDialog.setMessage(" " + sMachineSpeedTemp); //Center Text, Probably not the correct way to do this. :)
mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(final DialogInterface dialog) {
//while (bDummy== false) {
Button button_Speed_Up = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
button_Speed_Up.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
MlpiConnection device = m_app.getDevice();
device.connect("192.168.0.5");
if (device.isConnected()) {
sMachineSpeedTemp = (device.logic().readVariableBySymbolAsString("Application.UserVarGlobal.sMachineSpeed_gb"));
iMachineSpeedTemp = Integer.parseInt(sMachineSpeedTemp);
iMachineSpeedTemp++;
device.logic().writeVariableBySymbolAsString("Application.UserVarGlobal.sMachineSpeed_gb", sMachineSpeedTemp);
sMachineSpeedTemp = iMachineSpeedTemp.toString();
mAlertDialog.setMessage("" + sMachineSpeedTemp);
}
else
{
mAlertDialog.setMessage("bad connection");
}
}
catch (Exception e) {
Context c = v.getContext();
Toast.makeText(c, e + "Connection Error UP", Toast.LENGTH_LONG).show();
}
}
});
Button button_Speed_Down = mAlertDialog.getButton(AlertDialog.BUTTON_NEUTRAL);
button_Speed_Down.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
try {
MlpiConnection device = m_app.getDevice();
device.connect("192.168.0.5");
if (device.isConnected()) {
sMachineSpeedTemp = (device.logic().readVariableBySymbolAsString("Application.UserVarGlobal.sMachineSpeed_gb"));
iMachineSpeedTemp = Integer.parseInt(sMachineSpeedTemp);
iMachineSpeedTemp--;
device.logic().writeVariableBySymbolAsString("Application.UserVarGlobal.sMachineSpeed_gb", sMachineSpeedTemp);
sMachineSpeedTemp = iMachineSpeedTemp.toString();
mAlertDialog.setMessage(sMachineSpeedTemp);
mAlertDialog.setMessage("" + sMachineSpeedTemp);
}
else
{
mAlertDialog.setMessage("bad connection");
}
} catch (Exception e) {
Context c = v.getContext();
Toast.makeText(c, e + "Connection Error Down", Toast.LENGTH_LONG).show();
}
}
});
}
});
mAlertDialog.show();
}
確定。一個問題是,值不會在0。該值正在被讀取另一個設備,它可能是任何東西。所以當我第一次開始活動時,我必須讀取這個值,然後從這個值開始遞增,這可能是任何東西。至少這是我目前的攻擊計劃,可能會倒退,idk ... –