方法调用在 Android 中不起作用
method call is not working in Android
在把这个问题放在这里之前我尝试了很多。
Messaging msg = new Messaging();
msg.appendToMessageHistorysend(FriendList.ownusername, str);
我正在从另一个 Activity 调用 appendToMessageHistorysend 函数来发送消息 class
public void appendToMessageHistorysend(String username, String message) {
if (username != null && message != null) {
username1 = "<font color=#FF66CC>" + "<b>" + username + "<b/>"
+ ": " + "</font>";
message1 = "<font color=#ffcc00>" + message + " "
+ "<br/>" + "</font>";
Thread thread = new Thread() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
if (messageHistoryText != null) {
messageHistoryText.append(Html
.fromHtml(username1));
messageHistoryText.append(Html
.fromHtml(message1));
}
else {
Toast.makeText(mCon, "hey yo you are null",
Toast.LENGTH_LONG).show();
}
}
});
}
};
thread.start();
}
}
这是被调用的函数,我收到如下错误
01-21 15:21:42.552: E/AndroidRuntime(16751): FATAL EXCEPTION: main
01-21 15:21:42.552: E/AndroidRuntime(16751): java.lang.NullPointerException
01-21 15:21:42.552: E/AndroidRuntime(16751): at at.vcity.androidim.Messaging.run(Messaging.java:515)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.os.Handler.handleCallback(Handler.java:615)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.os.Handler.dispatchMessage(Handler.java:92)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.os.Looper.loop(Looper.java:137)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.app.ActivityThread.main(ActivityThread.java:4812)
01-21 15:21:42.552: E/AndroidRuntime(16751): at java.lang.reflect.Method.invokeNative(Native Method)
01-21 15:21:42.552: E/AndroidRuntime(16751): at java.lang.reflect.Method.invoke(Method.java:511)
01-21 15:21:42.552: E/AndroidRuntime(16751): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
01-21 15:21:42.552: E/AndroidRuntime(16751): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
01-21 15:21:42.552: E/AndroidRuntime(16751): at dalvik.system.NativeStart.main(Native Method)
01-21 15:21:44.704: E/Trace(17053): error opening trace file: No such file or directory (2)
请抽出宝贵的时间,非常感谢大家。
您需要 Context
才能在其他 class 中显示 Toast
。
因此您需要在 Messaging class like
中创建单参数构造函数
private Context mCon;
public void Messaging(Context con){
this.mCon=con;
}
然后像
一样使用
Toast.makeText(mCon, "Testing",Toast.LENGTH_LONG).show();
并称赞
Messaging msg = new Messaging(getApplicationContext());
在把这个问题放在这里之前我尝试了很多。
Messaging msg = new Messaging();
msg.appendToMessageHistorysend(FriendList.ownusername, str);
我正在从另一个 Activity 调用 appendToMessageHistorysend 函数来发送消息 class
public void appendToMessageHistorysend(String username, String message) {
if (username != null && message != null) {
username1 = "<font color=#FF66CC>" + "<b>" + username + "<b/>"
+ ": " + "</font>";
message1 = "<font color=#ffcc00>" + message + " "
+ "<br/>" + "</font>";
Thread thread = new Thread() {
@Override
public void run() {
handler.post(new Runnable() {
public void run() {
if (messageHistoryText != null) {
messageHistoryText.append(Html
.fromHtml(username1));
messageHistoryText.append(Html
.fromHtml(message1));
}
else {
Toast.makeText(mCon, "hey yo you are null",
Toast.LENGTH_LONG).show();
}
}
});
}
};
thread.start();
}
}
这是被调用的函数,我收到如下错误
01-21 15:21:42.552: E/AndroidRuntime(16751): FATAL EXCEPTION: main
01-21 15:21:42.552: E/AndroidRuntime(16751): java.lang.NullPointerException
01-21 15:21:42.552: E/AndroidRuntime(16751): at at.vcity.androidim.Messaging.run(Messaging.java:515)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.os.Handler.handleCallback(Handler.java:615)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.os.Handler.dispatchMessage(Handler.java:92)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.os.Looper.loop(Looper.java:137)
01-21 15:21:42.552: E/AndroidRuntime(16751): at android.app.ActivityThread.main(ActivityThread.java:4812)
01-21 15:21:42.552: E/AndroidRuntime(16751): at java.lang.reflect.Method.invokeNative(Native Method)
01-21 15:21:42.552: E/AndroidRuntime(16751): at java.lang.reflect.Method.invoke(Method.java:511)
01-21 15:21:42.552: E/AndroidRuntime(16751): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
01-21 15:21:42.552: E/AndroidRuntime(16751): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
01-21 15:21:42.552: E/AndroidRuntime(16751): at dalvik.system.NativeStart.main(Native Method)
01-21 15:21:44.704: E/Trace(17053): error opening trace file: No such file or directory (2)
请抽出宝贵的时间,非常感谢大家。
您需要 Context
才能在其他 class 中显示 Toast
。
因此您需要在 Messaging class like
中创建单参数构造函数private Context mCon;
public void Messaging(Context con){
this.mCon=con;
}
然后像
一样使用Toast.makeText(mCon, "Testing",Toast.LENGTH_LONG).show();
并称赞
Messaging msg = new Messaging(getApplicationContext());