【发布时间】:2016-04-25 22:36:38
【问题描述】:
我是 android studio 的新手。我正在为我的应用程序做 toast 消息,但我无法做到这一点。这个在 eclipse 中工作,但不适用于 android studio。我尝试了很多,但 toast 消息根本没有显示。 以下是代码。请建议我。提前谢谢。
索引.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-tap-highlight" content="no" />
<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />
<link rel="stylesheet" type="text/css" href="css/index.css" />
<title>Hello World</title>
<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="toastPlugin.js"></script>
<script>
function toast()
{
// alert('hii');
// shortToast("Short Toast Message Here...");
longToast("Long Toast Message Here...");
}
</script>
</head>
<body>
<div class="app">
<h1>Apache Cordova</h1>
<div id="deviceready" class="blink">
<div onclick="toast();">click</div>
</div>
</div>
</body>
</html>
toastPlugin.js
window.shortToast = function(str, callback) {
cordova.exec(callback, function(err) {
callback('Nothing to echo.');
}, "ToastPlugin", "shortToast", [ str ]);
};
window.longToast = function(str, callback) {
alert(str);//Long Toast Message Here...
cordova.exec(callback, function(err) { alert("Nothing to echo");
callback('Nothing to echo.');
}, "ToastPlugin", "longToast", [ str ]);
};
ToastPlugin.java
package com.raddyx.myapplication;
import org.apache.cordova.api.CallbackContext;
import org.apache.cordova.api.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.util.Log;
import android.widget.Toast;
public class ToastPlugin extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args,
CallbackContext callbackContext) throws JSONException {
String message = args.getString(0);
// used to log the text and can be seen in LogCat
Log.d("Toast Plugin", "Calling the Toast...");
Log.d("Toast Plugin", message);
if (action.equals("shortToast")) {
this.shortToast(message, callbackContext);
return true;
} else if (action.equals("longToast")) {
this.longToast(message, callbackContext);
return true;
}
return false;
}
private void shortToast(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
Toast.makeText(cordova.getActivity().getApplicationContext(),
message, Toast.LENGTH_SHORT).show();
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
private void longToast(String message, CallbackContext callbackContext) {
if (message != null && message.length() > 0) {
Toast.makeText(cordova.getActivity().getApplicationContext(),
message, Toast.LENGTH_LONG).show();
callbackContext.success(message);
} else {
callbackContext.error("Expected one non-empty string argument.");
}
}
}
在 config.xml 中
<feature name="ToastPlugin"> <param name="android-package" value="com.raddyx.plugins.ToastPlugin" /> </feature>
【问题讨论】:
-
cordova.getActivity().getApplicationContext()这个Object在哪里初始化?科尔多瓦?你的 logcat 是什么? -
我会放cordova.getActivity().getApplicationContext();在 ToastPlugin.java 中? @helldawg
-
cordova 对象未初始化,因此可能会给您 NullPointerException
-
有什么理由不使用现有的 toast 插件,比如this?
-
好的,我是 cheking.@helldawg13
标签: android cordova android-studio phonegap-plugins android-toast