2014-09-23 9 views
0

У меня есть Funt Exception для Android Runtime: главное, и я не знаю, что мне нужно сделать, чтобы решить эту проблему. У меня есть следующий код, который вызывает это исключение:Android Runtime - Fatal Exception: main

... @Override 
public void onItemClick(AdapterView<?> parent, View view, int position, 
     long id) { 
    Cursor c = (Cursor) mAdapter.getItem(position); 
    // startActivity(new Intent(Intent.ACTION_VIEW, 
    // Uri.parse(c.getString(c.getColumnIndex("link"))))); 
    // Cursor c = (Cursor) mAdapter.getItem(position); 
    // String urlWebView = 
    // Uri.parse(c.getString(c.getColumnIndex("link"))).toString(); 
    String feedDescription = Uri.parse(
      c.getString(c.getColumnIndex("description"))).toString(); 
    String feedTitle = Uri.parse(c.getString(c.getColumnIndex("title"))) 
      .toString(); 
    String feedLink = Uri.parse(c.getString(c.getColumnIndex("link"))) 
      .toString(); 

    String imageLink = Uri.parse(c.getString(c.getColumnIndex("img_link"))).toString(); 
    Intent in = new Intent(MainActivity.this, ShowNewsSummary.class); 
    in.putExtra("FeedDescription", feedDescription); 
    in.putExtra("FeedTitle", feedTitle); 
    in.putExtra("FeedLink", feedLink); 
    in.putExtra("ImageLink", imageLink); 
    startActivity(in); 
} 

В этом коде я получаю img_link, который может быть нулевым, когда никакой связи изображения не найден в базе данных. Когда я нажимаю на элемент я начинаю ShowNewsSummaryActivity и бросает Fatal Главное исключение, если нет img_link не найден в базе данных, потому что AsyncTask не может загрузить изображение, если не указан адрес изображения не найден:

... @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activty_show_news_summary); 
    String descriptionFeed = getIntent().getStringExtra("FeedDescription"); 
    String titleFeed = getIntent().getStringExtra("FeedTitle"); 
    imageLinkFeed = getIntent().getStringExtra("ImageLink"); 
    title = (TextView) findViewById(R.id.title_feed); 
    description = (TextView) findViewById(R.id.description_feed); 
    imageDescription = (ImageView) findViewById(R.id.descriptionImage); 
    if (imageDescription != null) { 
    imageDescription.setVisibility(View.VISIBLE); 
    new DownloadImageAsyncTask(imageDescription).execute(imageLinkFeed); 

    } 
    title.setText(titleFeed); 
    description.setText(descriptionFeed); 
    title.setOnClickListener(this); 
} 

Это LogCat Исключение:

09-23 22:54:42.210: E/AndroidRuntime(11885): FATAL EXCEPTION: main 
09-23 22:54:42.210: E/AndroidRuntime(11885): java.lang.NullPointerException: uriString 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.net.Uri$StringUri.<init>(Uri.java:464) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.net.Uri$StringUri.<init>(Uri.java:454) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.net.Uri.parse(Uri.java:426) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at com.fire147.samplesmartrss.MainActivity.onItemClick(MainActivity.java:176) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.widget.AdapterView.performItemClick(AdapterView.java:298) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.widget.AbsListView.performItemClick(AbsListView.java:1280) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3083) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.widget.AbsListView$1.run(AbsListView.java:3983) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.os.Handler.handleCallback(Handler.java:615) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.os.Looper.loop(Looper.java:137) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at android.app.ActivityThread.main(ActivityThread.java:4949) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at java.lang.reflect.Method.invokeNative(Native Method) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at java.lang.reflect.Method.invoke(Method.java:511) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1043) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810) 
09-23 22:54:42.210: E/AndroidRuntime(11885): at dalvik.system.NativeStart.main(Native Method) 

Где моя ошибка?

+0

Опубликовать logcat исключения – panini

+0

Что такое столбец ошибки? Вы можете использовать команду «adb -d logcat», чтобы просмотреть все журналы. –

ответ

2

В состоянии Android Developers API Uri.Parse следующее:

http://developer.android.com/reference/android/net/Uri.html#parse(java.lang.String)

Throws NullPointerException if uriString is null 

он идет в вашем MainActivity - метод onItemClick. Поэтому проблема заключается в том, что одна из следующих строк, которые вы ввели в Uri.parse(), имеет значение null.

Отладить следующий код и проверить, какой из них является нулевым.

String feedDescription = Uri.parse(
      c.getString(c.getColumnIndex("description"))).toString(); 
    String feedTitle = Uri.parse(c.getString(c.getColumnIndex("title"))) 
      .toString(); 
    String feedLink = Uri.parse(c.getString(c.getColumnIndex("link"))) 
      .toString(); 

    String imageLink = Uri.parse(c.getString(c.getColumnIndex("img_link"))).toString(); 

уточнить, один из следующего кода возвращает нулевое значение

c.getString(c.getColumnIndex("description"))).toString(); 
c.getString(c.getColumnIndex("title"))).toString(); 
c.getString(c.getColumnIndex("link"))).toString(); 
c.getString(c.getColumnIndex("img_link"))).toString(); 

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

EDIT

Вы сказали, что это одна строка, которая возвращает нуль.

c.getString(c.getColumnIndex("img_link"))).toString(); 

Чтобы исправить это просто используйте следующий код:

String img_link = c.getString(c.getColumnIndex("img_link")); 
String imageLink = (img_link == null) ? "NULL" : Uri.parse(img_link).toString(); 

это может быть не самый чистый нуль-чек, но вы можете использовать следующий сайт, чтобы найти лучший нуль проверить есть

http://howtodoinjava.com/2013/04/05/how-to-effectively-handle-nullpointerexception-in-java/

+0

c.getString (c.getColumnIndex ("img_link"))). ToString(); вызывают это исключение. Как я могу решить эту проблему? – fire147

+0

@ fire147 см. Мой ответ на редактирование, скажите, работает ли он. Вам просто нужно проверить, является ли значение нулевым –

+0

Спасибо за отличный ответ! – fire147

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

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