混合应用程序上的原生Android用户界面
我想在基于IBM MobileFirst平台的混合应用程序中显示本机android datepicker 我遵循了下面的教程,但是当我点击文本框时,datepicker并没有显示出来 以下是我的测试应用程序: 以下是单击textbox时js文件中的代码混合应用程序上的原生Android用户界面,android,android-layout,ibm-mobilefirst,Android,Android Layout,Ibm Mobilefirst,我想在基于IBM MobileFirst平台的混合应用程序中显示本机android datepicker 我遵循了下面的教程,但是当我点击文本框时,datepicker并没有显示出来 以下是我的测试应用程序: 以下是单击textbox时js文件中的代码 $('#textDate').on('click', function(){ $('#errorMsg').empty(); WL.App.sendActionToNative("setMyDate"); WL
$('#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代码中,我创建了一个类textboxDate,其中包含ActionReceiver的代码
public 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);
}
}addActionReceiver必须放在主活动的onCreate方法中,而不是放在实现WLActionReceiver的类中,当然也不能放在onActionReceived方法中
您还错误地处理了将值从日期选择器返回到WebView的方式。。。
事实上,所有的实现都是不正确的:/
无论你想在这里实现什么,听起来你可能想选择使用
下面是同一个项目,使用WL.NativePage实现。看看common\js\main.js和android\nativeResources\src\com\getDatePicker\DatePickerActivity.java
你应该发布一些你正在做的事情的代码,我们不能帮你弄清楚。我在混合应用程序中有一个注册页面,其中包含各种文本框。在该页面外,有一个文本框包含日期信息。当我单击“输入日期”文本框时,我想打开本机android datepicker来选择日期并将所选日期返回到注册页面WebView。我只想在混合应用程序中使用一个本机UI元素datepicker。你应该把它整合到你的应用程序中。您可以在本机代码中调整从日期选择器返回的内容。好的。但在你们的项目中,当我点击链接点击选择一个日期时,本机日期选择器并没有在设备上打开。我想需要做一些调整,但是代码是合理的,并且易于使用——javascript和java。我不知道您遇到了什么错误…以下是错误:未捕获错误:已加载本机页面。无法调用其他本机页。worklight.js:15435 show worklight.js:15435 selectDate main.js:8 onclick index.html:38