2013-09-28 2 views
-1

Я получаю исключение NullPointerException при запуске деятельности helloworld. Я начинаю этот класс из класса FileEvent.java, код которого я здесь записал.NullPointerException при запуске деятельности в android

public class FileEvent extends Activity implements ObserverActivity{ 
public static String path2; 
public String filename; 
public String path; 
public adapter info ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
      this.info = new adapter(this); 

} 

    public void insert(String path) { 
     // TODO Auto-generated method stub 
//  try{ 

    this.info = new adapter(this); 
    this.filename = path; 

      System.out.println("Starting intent in fileevent"); 
      try{ 
     startActivity(new Intent(FileEvent.this,hello.class)); // In this line I am getting nullpointerexception was caught. 
      } 
      catch(Exception e) 
      { 
       Log.v("Caught in insert() of FileEvent : ",e.toString()); 
      } 

    } 

hello.class состоит из простого текстового вида.

AndroidManifest.xml: -

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.sample_fileobserver" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="17" /> 
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name="com.example.sample_fileobserver.hello" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.hello" /> 

       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name="com.example.sample_fileobserver.FileEvent" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.FIleEvent" /> 

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

</manifest> 

LogCat показывает следующее сообщение -

09-28 05:51:55.307: I/System.out(13542): Starting intent in fileevent 
09-28 05:51:55.307: A/FileObserver(13542): Unhandled exception in FileObserver [email protected] 
09-28 05:51:55.307: A/FileObserver(13542): java.lang.NullPointerException 
09-28 05:51:55.307: A/FileObserver(13542): at android.content.ContextWrapper.getPackageName(ContextWrapper.java:135) 
09-28 05:51:55.307: A/FileObserver(13542): at android.content.ComponentName.<init>(ComponentName.java:75) 
09-28 05:51:55.307: A/FileObserver(13542): at android.content.Intent.<init>(Intent.java:3662) 
09-28 05:51:55.307: A/FileObserver(13542): at com.example.sample_fileobserver.FileEvent.insert(FileEvent.java:42) 
09-28 05:51:55.307: A/FileObserver(13542): at com.example.sample_fileobserver.MyFileObserver.onEvent(MyFileObserver.java:70) 
09-28 05:51:55.307: A/FileObserver(13542): at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:125) 
09-28 05:51:55.307: A/FileObserver(13542): at android.os.FileObserver$ObserverThread.observe(Native Method) 
09-28 05:51:55.307: A/FileObserver(13542): at android.os.FileObserver$ObserverThread.run(FileObserver.java:88) 

Примечание: -

1) Я не объявленную setContentView() в классе FileEvent, поскольку он не будет использовать пользовательский интерфейс.

2) Здесь onCreate() не работает, поскольку я вызываю insert() из другого класса моего приложения.

Может показаться, что этот вопрос может быть дубликат многих других вопросов, но я не нашел правильного решения из этих вопросов.

Заранее спасибо.

+0

Пожалуйста, разместите всю трассировку стека. – Simon

+1

Почему вы используете Activity, если вы не хотите иметь/устанавливать пользовательский интерфейс? – fasteque

+0

У вас есть опечатка в вашем манифесте - 'FIleEvent' – Simon

ответ

1

Вы получаете сообщение об ошибке, потому что вы пытаетесь вызвать другую деятельность с FileEvent контексте класса. Я думаю, что это невозможно.

Если вы вызываете метод insert() из другого класса, необходимо передать контекст этого класса.

Попробуйте передать Контекст этого класса.

Ваш метод должен быть

public void insert(String path, Context context) 
{ 
    info = new adapter(context); 
    filename = path; 

    try 
    { 
     startActivity(new Intent(context,hello.class)); 
    } 
    catch(Exception e) 
    { 
     Log.v("Caught in insert() of FileEvent : ",e.toString()); 
    } 
} 

Надеется, что это поможет.

+0

Спасибо за ответ @Andrain, но я ранее пробовал печатать некоторые сообщения журнала в методе insert(). Они работали. Таким образом, я не думаю, что может возникнуть проблема при вызове insert() из другого класса. Мое приложение приостановлено в startActivity() в методе FileEvent. – nki

1

Изменение манифеста:

<activity 
    android:name="com.example.sample_fileobserver.FileEvent" 
    android:label="@string/app_name" > 
    <intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 
</activity> 
+0

На самом деле у меня есть другая деятельность как 'LAUNCHER'. из этого действия я вызываю этот метод 'insert()'. – nki

 Смежные вопросы

  • Нет связанных вопросов^_^