私はAlertDialogを使ってPLCに変数を書き込もうとしているアプリケーションをやっています。私はあなたがボタンをクリックするたびにvarを1ずつインクリメントするようにしたいと思います。だから、スピードアップボタンをクリックするとインクリメントしますが、もう一度クリックすると再びインクリメントしません。私がそれからSpeed Downボタンを選択すると値が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();
}
OKです。 1つの問題は、値が0にならないことです。値は別のデバイスから読み取られており、何でもかまいません。だから私は最初にアクティビティを開始してから値を増やす必要があります。その値は何でもかまいません。少なくともそれは攻撃の私の現在の計画です、後方には、idk ... –