我是新手編程,並嘗試使用phonegap創建一個android應用程序。 我正在使用cordova 3.5(Phonegap Dialog Plugin)中的對話框插件來啓用提示,以從用戶獲取一些價值並將其存儲在輸入區域中。對話框插件phonegap編輯默認文本
navigator.notification.prompt(
'Enter Value : ', // message
onPrompt, // callback to invoke
'Input', // title
['Cancel','Options','Ok'], // buttonLabels
text // defaultText
)
默認文本是先前由用戶輸入的值。如果我想糾正一個錯字,我必須再次輸入所有內容。我該怎麼做,以便默認文本不會被覆蓋,我可以從當前值本身編輯默認文本?
發現這個鏈接:http://twigstechtips.blogspot.in/2011/10/android-allow-user-to-editinput-text.html
所以,我嘗試編輯這個文件:/plugins/org.apache.cordova.dialogs/src/android/Notifications.java
原始代碼:
public synchronized void prompt(final String message, final String title, final JSONArray buttonLabels, final String defaultText, final CallbackContext callbackContext) {
final CordovaInterface cordova = this.cordova;
Runnable runnable = new Runnable() {
public void run() {
final EditText promptInput = new EditText(cordova.getActivity());
promptInput.setHint(defaultText);
AlertDialog.Builder dlg = new AlertDialog.Builder(cordova.getActivity());
dlg.setMessage(message);
dlg.setTitle(title);
dlg.setCancelable(true);
dlg.setView(promptInput);
final JSONObject result = new JSONObject();
// First button
if (buttonLabels.length() > 0) {
try {
dlg.setNegativeButton(buttonLabels.getString(0),
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
try {
result.put("buttonIndex",1);
result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
} catch (JSONException e) { e.printStackTrace(); }
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
}
});
} catch (JSONException e) { }
}
// Second button
if (buttonLabels.length() > 1) {
try {
dlg.setNeutralButton(buttonLabels.getString(1),
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
try {
result.put("buttonIndex",2);
result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
} catch (JSONException e) { e.printStackTrace(); }
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
}
});
} catch (JSONException e) { }
}
// Third button
if (buttonLabels.length() > 2) {
try {
dlg.setPositiveButton(buttonLabels.getString(2),
new AlertDialog.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
try {
result.put("buttonIndex",3);
result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
} catch (JSONException e) { e.printStackTrace(); }
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
}
});
} catch (JSONException e) { }
}
dlg.setOnCancelListener(new AlertDialog.OnCancelListener() {
public void onCancel(DialogInterface dialog){
dialog.dismiss();
try {
result.put("buttonIndex",0);
result.put("input1", promptInput.getText().toString().trim().length()==0 ? defaultText : promptInput.getText());
} catch (JSONException e) { e.printStackTrace(); }
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));
}
});
dlg.create();
dlg.show();
};
};
this.cordova.getActivity().runOnUiThread(runnable);
}
一個變化:
final EditText promptInput = new EditText(this);
promptInput.setHint(defaultText);
和第二個變化:
result.put("input1", promptInput.getText().toString().trim().length()==0 ? "" : promptInput.getText());
}
但是不起作用。默認文本不能從當前值編輯,所有內容都會被覆蓋。
我需要做些什麼改變才能獲得所需的功能?
你所要求的是非常模糊的。如果你是從提示發送文本,然後它的某處我們也會去替換,所以從理解你想讓以前輸入的字符串永遠保持在那裏,以便用戶可以進行更改。 – allwynmasc
我在Android上遇到同樣的問題,但在iOS上可以修改默認文本。 – user276648