2013-04-25 3 views
0

У меня есть эта строка кода, я получаю NullPointerException здесьWeird NullPointerException android.content.ComponentName

линия 219 Search.java

Намерение Намерение = новый Intent ((Context) ActionBar , SearchResultsMap.class)

Исключение

04-25 17:30:00.485: W/System.err(6518): java.lang.NullPointerException 
04-25 17:30:00.501: W/System.err(6518):  at android.content.ComponentName.<init>(ComponentName.java:75) 
04-25 17:30:00.501: W/System.err(6518):  at android.content.Intent.<init>(Intent.java:2823) 
04-25 17:30:00.501: W/System.err(6518):  at com.itaxeeta.server.Search.onPostExecute(Search.java:219) 

AndroidManifest

<activity 
      android:name="com.itaxeeta.SearchResultsMap" 
      android:configChanges="keyboardHidden|orientation" 
      android:label="@string/app_name" 
      android:screenOrientation="portrait" 
      android:theme="@android:style/Theme.Light.NoTitleBar" /> 

Похоже SearchResultsMap.class придумывает, как Null, но как же это, его деятельность и его прямо там. Это случается случайным образом, часто. Что мне не хватает?

Редактировать: добавлен еще один код для ясности.

Внутри активность

public class HomeScreen extends MapActivity implements IActionBar 
    .... 
    onClick() { 
    .... 
    new Search(this, source, destination).execute();  
    ... 
    } 
} 

Поиск Класс

public Search(IActionBar actionBar, GeoPoint source, GeoPoint destination) { 
    super(actionBar); 
    this.source = source; 
    this.destination = destination; 
} 

public interface IActionBar { 
    public void setBusyVisibility(int visibility) ; 
    public void setSubscribedToCount() ; 
    public void setCurrentAddress(String address) ; 
    public void setSubscribedToDetails(CustomJourneyUserInformation[] result); 
    public Context getContext() ; 
} 

ответ

0

ActionBar не может быть приведен к Context, более того, кажется, что это null на момент создания экземпляра Intent. Если этот код выполняется внутри Activity, просто отправьте this в качестве первого параметра.

+0

То, что я сделал, В HomeScreen я реализовал IActionBar (у которого есть getContext()), а затем я назвал 'new Search (this, source, destination) .execute();'. В поиске (async task) я передаю actionBar. Должно было сработать. Infact он делает, редко я получаю исключение. – Siddharth

2

Использование

Intent intent = new Intent(getApplicationContext(), SearchResultsMap.class) 

ИЛИ

Intent intent = new Intent(Your_ClassName.this, SearchResultsMap.class) 

Вместо

Intent intent = new Intent((Context) actionBar, SearchResultsMap.class) 
+0

Добавлен код для ясности. К сожалению, должен был добавить его раньше. – Siddharth

+0

Your_ClassName.this дает 'Нет закрывающего экземпляра типа HomeScreen, доступного в области" – Siddharth

+0

, затем укажите Your_ClassName.class –

0

Если вы хотите использовать Intent в AsyncTask затем использовать этот код,

public class Search extends AsyncTask<Main, Void, Main> { 
     @Override 
     protected Main doInBackground(Main... params) { 
      return params[0]; 
     } 
    protected void onPostExecute(Main params) { 
    // TODO Auto-generated method stub 
     Intent intent = new Intent(params,SearchResultsMap.class); 
     startActivity(intent); 
    } 
    } 
0

У меня такое же исключение. В моем случае это происходит потому, что когда я бегу ниже кода: Цель намерения = новый намерение (активность, MyActivity.class) Активность уже завершена. то он равен нулю.

Надежда помочь другим.