我想在基于IBM MobileFirst Platform的混合应用程序中显示本机android datepicker。
我按照下面的教程,但点击文本框时没有显示datepicker。
以下是我的测试申请:https://db.tt/tm8ihJc9
以下是单击文本框时js文件中的代码
$('#textDate').on('click', function(){
$('#errorMsg').empty();
WL.App.sendActionToNative("setMyDate");
WL.App.addActionReceiver("myActionReceiver", function actionReceiver(received){
if(received.action == 'setMyDate'){
alert(received);
$('#errorMsg').html(received.data.errorReason);
}
});
});
在Java代码中,我创建了一个包含ActionReceiver
代码的类textboxDatepublic class textboxDate extends CordovaActivity implements WLActionReceiver{
private Activity parentActivity;
DatePicker datePicker;
int hour, minute;
TextView textVw;
public textboxDate(Activity pActivity){
parentActivity = pActivity;
}
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.textdate);
WL.getInstance().addActionReceiver(new textboxDate(this));
super.loadUrl(WL.getInstance().getMainHtmlFilePath());
try{
JSONObject data = new JSONObject();
data.put("setMyDate", 12345);
WL.getInstance().sendActionToJS("setMyDate", data);
}catch(Exception e){
}
}
@Override
public void onActionReceived(String action, JSONObject data) {
if (action.equals("setMyDate" )){
WL.getInstance().addActionReceiver(this);
showDatePicker();
}
}
public void showDatePicker(){
textVw = (TextView) findViewById(R.id.tv1);
datePicker = (DatePicker) findViewById(R.id.datePicker1);
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
textVw.setText(new StringBuilder()
// Month is 0 based, just add 1
.append(month + 1).append("-").append(day).append("-")
.append(year).append(" "));
// set current date into datepicker
datePicker.init(year, month, day, null);
}
@Override
public void onDestroy() {
super.onDestroy();
WL.getInstance().removeActionReceiver(this);
}
}
答案 0 :(得分:0)
addActionReceiver
必须放在主要活动的onCreate
方法中,而不是放在实现WLActionReceiver
的类中,当然不能放在onActionReceived
方法中。< / p>
您也错误地处理了将值从datePicker返回到WebView的方式...
实际上,所有的实现都是不正确的。 :/
对于您在此处尝试实现的任何内容,听起来您可能希望选择使用WL.NativePage。
以下是使用WL.NativePage
实施的同一项目。看看常见的\ js \ main.js和android \ nativeResources \ src \ com \ getDatePicker \ DatePickerActivity.java
https://www.dropbox.com/s/jvhlo684ulpb40c/getDateProject.zip