来自其他类的方法的调用状态栏通知

问题描述:

首先,我对android和Java都很陌生。来自其他类的方法的调用状态栏通知

我有两个类,我的main.class和Note.class。

我在我的main.class的Note.class中调用通知方法,当我按下按钮时。

的问题是与这条线从Note.class:

PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 

当方法被调用它强行关闭。我相信问题是PendingIntent.getActivity(this,0,notificationIntent,0)中的“this”,但我不确定要将其更改为。

通知代码在主类中正常工作。

我将非常感谢任何指导。

编辑: 主类:http://pastebin.com/05Yx0a48

Note.class:

package com.adamblanchard.remindme.com.adamblanchard; 

import com.adamblanchard.remindme.R; 
import android.app.Activity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.app.PendingIntent; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 



public class Note extends Activity { 

public CharSequence note = "not changed"; 
int HELLO_ID = 1; 

/** Called when the activity is first created. */ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    setTitle("Remind Me!"); 


} 

//Notification Method 

public void callNotification() { 
    // TODO Auto-generated method stub 


    String ns = Context.NOTIFICATION_SERVICE; 
    final NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 

    int icon = R.drawable.launcher; 
    CharSequence tickerText = "Remind Me!"; 
    long when = System.currentTimeMillis(); 

    final Notification notification = new Notification(icon, tickerText, when); 

notification.flags |= Notification.FLAG_AUTO_CANCEL; 

final Context context = getApplicationContext(); 
CharSequence contentTitle = "Remind Me!"; 
CharSequence contentText = note; 

Intent notificationIntent = new Intent(context, AndroidNotifications.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 

notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent); 





     mNotificationManager.notify(HELLO_ID, notification); 

     HELLO_ID++; 
} 

} 

调试输出:

螺纹[< 1>主](暂停(例外IllegalStateException异常) )
注意(Activity).getSystemService(String)行:3536
Note.callNotification()线:37
remindme $ 1 $ 1.onClick(DialogInterface,INT)线:72 AlertDialog(AlertController $ ButtonHandler).handleMessage(消息)线:159 AlertController $ ButtonHandler(处理程序)。调用Message(Message)行:99
Looper.loop()line:123 ActivityThread.main(String [])line:3647
Method.invokeNative(Object,Object [],Class,Class [],Class,int ,布尔值)行:不可用[本地方法]
Method.invoke(Object,Object ...)line:507
ZygoteInit $ MethodAndArgsCaller.run()line:839
ZygoteInit.main(字符串[])线:597 NativeStart.main(字符串[])行:不可用[本机方法]

这是调试输出我得到的,再加上强制关闭弹出装置。

EDIT2:

清单XML:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.adamblanchard.remindme" 
    android:versionCode="3" 
    android:versionName="0.7"> 
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher72"> 

<activity android:name=".com.adamblanchard.remindme" android:label="@string/app_name"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 

<activity android:name=".Note"> 
<intent-filter> 
<action android:name="Note" /> 
<category android:name="android.intent.category.DEFAULT"/> 
</intent-filter> 
</activity> 
</application> 


<uses-sdk android:minSdkVersion="1"></uses-sdk> 
</manifest> 

堆栈跟踪(难道这些你是什么意思?):

Thread [<1> main] (Suspended (exception ActivityNotFoundException)) 
Instrumentation.checkStartActivityResult(int, Object) line: 1404  
Instrumentation.execStartActivity(Context, IBinder, IBinder, Activity, Intent, int) line: 1378 
remindme(Activity).startActivityForResult(Intent, int) line: 2827 
remindme(Activity).startActivity(Intent) line: 2933 
remindme$1$1.onClick(DialogInterface, int) line: 82 
AlertDialog(AlertController$ButtonHandler).handleMessage(Message) line: 159 
AlertController$ButtonHandler(Handler).dispatchMessage(Message) line: 99  
Looper.loop() line: 123 
ActivityThread.main(String[]) line: 3647  
Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method] 
Method.invoke(Object, Object...) line: 507 
ZygoteInit$MethodAndArgsCaller.run() line: 839 
ZygoteInit.main(String[]) line: 597 
NativeStart.main(String[]) line: not available [native method] 

或:

01-15 00:56:18.167: WARN/dalvikvm(14887): threadid=1: thread exiting with uncaught exception (group=0x40015560) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887): FATAL EXCEPTION: main 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.adamblanchard.remindme/com.adamblanchard.remindme.com.adamblanchard.Note}; have you declared this activity in your AndroidManifest.xml? 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1404) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1378) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.app.Activity.startActivityForResult(Activity.java:2827) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.app.Activity.startActivity(Activity.java:2933) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at com.adamblanchard.remindme.com.adamblanchard.remindme$1$1.onClick(remindme.java:82) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:159) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.os.Looper.loop(Looper.java:123) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at android.app.ActivityThread.main(ActivityThread.java:3647) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at java.lang.reflect.Method.invoke(Method.java:507) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
01-15 00:56:18.217: ERROR/AndroidRuntime(14887):  at dalvik.system.NativeStart.main(Native Method) 
01-15 00:56:18.237: WARN/ActivityManager(156): Force finishing activity com.adamblanchard.remindme/.com.adamblanchard.remindme 
01-15 00:56:18.747: WARN/ActivityManager(156): Activity pause timeout for HistoryRecord{40a15868 com.adamblanchard.remindme/.com.adamblanchard.remindme} 
01-15 00:56:18.777: DEBUG/Launcher(10740): -- loadPreferences() 
01-15 00:56:19.177: INFO/ActivityManager(156): No longer want com.facebook.katana (pid 14395): hidden #16 
01-15 00:56:29.177: WARN/ActivityManager(156): Activity destroy timeout for HistoryRecord{40a15868 com.adamblanchard.remindme/.com.adamblanchard.remindme} 
+0

你能告诉我们您注意类的代码?另外,请告诉我们您收到的错误消息的详细信息。 – elevine 2011-01-13 22:16:42

+0

“主”和“注”都是活动吗?发布更多详情将帮助我们回答您的问题。 – WorkerThread 2011-01-13 22:29:23

OK!我修好了它!

在manifest.xml我需要使用全名的活动,即:

<activity android:name=".com.adamblanchard.Note"></activity> 

我已经与代码瞎搞,所以其他的事情可能只要我做出了贡献,但改变了它的工作。

在你remindme活动,你有下面这行: Note Note = new Note();

这是不是实例化一个Activity正确方式。您应该创建一个Intent

Intent myIntent = new Intent(this, Note.class); 

,并把它传递给startActivity

+0

我已经使用 \t意图myIntent =新意图(remindme.this,Note.class)尝试; \t reminme.this.startActivity(myIntent); 当按钮被按下,但我仍然得到强制关闭。 我相信我需要声明的androidmanifest的意图,但我不确定要放什么东西。 谢谢你的帮助。 – 2011-01-14 11:25:32