我正在爲Qt中的android製作應用程序。所以爲了使用Google API,我需要實現Java。所以我已經看過QtNotifier的例子,我正在嘗試實現與starter相同的功能。try/catch在Java中不工作?
這個Java的例子來自QtNotifier的例子,所以它應該工作相同,但它沒有。我曾嘗試使用Qt調試器進行調試,但斷點似乎沒有觸發因此,我添加了println語句來查看哪行出錯。但這還不夠,所以我試圖使用catch/try子句打印堆棧跟蹤。
我已經實現了它這樣的:
package org.qtproject.qt5.example;
import android.app.Notification;
import android.app.NotificationManager;
import android.content.Context;
import java.lang.Object;
import java.io.Writer;
import java.io.StringWriter;
import java.io.PrintWriter;
public class NotificationClient extends org.qtproject.qt5.android.bindings.QtActivity
{
private static NotificationManager m_notificationManager;
private static Notification.Builder m_builder;
private static NotificationClient m_instance;
public NotificationClient()
{
System.out.println("it works2222");
m_instance = this;
}
public static void notify(String s)
{
System.out.println(s);
try {
if (m_notificationManager == null) {
System.out.println("1111");
m_notificationManager = (NotificationManager)m_instance.getSystemService(Context.NOTIFICATION_SERVICE);
System.out.println("2222");
m_builder = new Notification.Builder(m_instance);
System.out.println("3333");
m_builder.setContentTitle("A message from Qt!");
System.out.println("4444");
}
System.out.println("5555");
m_builder.setContentText(s);
System.out.println("6666");
m_notificationManager.notify(1, m_builder.build());
System.out.println("7777");
} catch(Exception e) {
StringWriter writer = new StringWriter();
PrintWriter pw = new PrintWriter(writer);
e.printStackTrace(pw);
String errorDetail = writer.toString();
}
}
}
輸出是:
I/System.out(4768): test string
I/System.out(4768): 1111
這似乎是m_instance仍然是零,因爲 「的System.out.println(」 它works2222" ) ;」不會被調用。但錯誤不會被捕獲。
是因爲這是一個不是例外的錯誤?
我也嘗試運行QtNotifier應用程序,但裏面的printstatement。
public NotificationClient()
{
System.out.println("it works2222");
m_instance = this;
}
但是,這也不是在QtNotifier應用程序中調用。
我的問題是:如何追蹤這個錯誤?
謝謝,作品像魅力。 – CantThinkOfAnything