在我的应用程序中,我为gcm ccs(xmpp)运行这些代码,代码显示以下错误执行DoinBackground.excute()
时出错,这是代码:
sendTask = new AsyncTask<String, String, String>() {
protected String doInBackground(String... title) {
Bundle data = new Bundle();
data.putString("ACTION", action);
data.putString("CLIENT_MESSAGE", "Hello GCM CCS XMPP!");
String id = Integer.toString(ccsMsgId.incrementAndGet());
try {
Log.d("RegisterActivity", "messageid: " + id);
gcm.send(SENDER_ID + "@gcm.googleapis.com", id,
data);
Log.d("RegisterActivity", "After gcm.send successful.");
} catch (IOException e) {
Log.d("RegisterActivity", "Exception: " + e);
e.printStackTrace();
}
return "Sent message.";
}
protected void onPostExecute(String result) {
sendTask = null;
// tosat about the success in return
}
};
sendTask.execute(null, null, null);
您的sendtask
是如何声明的?我认为它只是asynctask sendtask;
,如果是,则将其更改为:
AsyncTask<String, String, String> sendTask;
此异常的原因与以下代码中发生的原因类似:
Object arr1[] = new Object[] {null,null,null};
String arr2[] = (String[])arr1; // here java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
java中的vararg是作为数组实现的,因此当您将sendTask声明为AsyncTask
时,编译器将使用New String[]{null,null,null}
调用您的DoInBackground
;但当您将其声明为AsyncTask
时,将使用New Object[]{null,null,null}
调用DoInBackground
。
由于类型擦除,编译器将从Object[]
向String[]
添加隐藏的隐式强制转换。这是为了允许如下代码正确工作:
AsyncTask sendTask = ...;
Object[] arg = new String[]{null,null,null};
sendTask.execute(arg);
MainActivity.java 对不起,我的英语很差。
我正试图通过登录从报头中发送的API密钥对一个用户进行身份验证,而没有任何用户详细信息。然后,我会得到一个转换异常,因为我试图将主体转换为字符串。
我在将2d数组传递给另一个活动时遇到了Android问题。我没有问题通过额外的作为可序列化发送它。但是在收到它时,我得到以下错误: E/AndroidRuntime(7396): 由以下原因引起: java.lang.ClassCastException: java.lang.Object[] 不能被强制转换为 java.lang.String[][] 我使用以下代码: 有人可以帮我解决这个问题吗
在tomcat上运行web应用程序时,我收到以下stacktrace错误,无法找到此异常的根本原因。
有人知道怎么解决这个问题吗?
问题内容: 我有。我想使用获得最大结果。这是我的代码: 这是我的: 现在我得到了。怎么了? 问题答案: 您的错误可能在以下行中: 其中query.list()返回BigInteger列表而不是Long列表。尝试将其更改为。