2012-05-28 4 views
1

Я недавно начал программирование на Android, и я столкнулся с небольшой проблемой.
То, что я пытаюсь сделать, это: У меня есть NewsActivity и NewsRows.class (в том же пакете).
Итак, новостная активность просто создает новый объект NewsRows и сообщает ему, чтобы заполнить TableLayout новыми строками.
Он отлично работает, пока я пытаюсь добавить изображение с ресурса ... Приложение просто продолжает сбой.
Отладчик говорит мне, что он не может найти ресурс, но я не могу узнать почему!Android-приложение падает при попытке добавить изображение в другом классе

Мой код здесь:
Весточка Acitivty

package de.myapp.app.activites.news; 

import de.myapp.app.R; 
import android.app.Activity; 
import android.os.Bundle; 

public class News extends Activity { 
    NewsRows rowClass = new NewsRows(); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.news); 

     NewsRows.createNewsEntries(this); 
    } 

} 

NewsRows.class

package de.myapp.app.activites.news; 

import de.myapp.app.R; 
import android.app.Activity; 
import android.widget.ImageView; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

public class NewsRows { 
static TextView   title; 
static TableRow   tRow; 
static TableLayout  tLayout; 
public NewsRows() { 

} 

public static void createNewsEntries(Activity contextActivity) { 

    ImageView image = new ImageView(contextActivity); 
    image.setBackgroundColor(R.drawable.myimage); 
    tLayout  = (TableLayout) contextActivity.findViewById(R.id.NewsTable); 

    for(int a = 0; a < 100; a++) { 
     tRow = new TableRow(contextActivity); 
     title = new TextView(contextActivity); 
     //tRow.addView(image); 
     title.setText("This is a test."); 
     tRow.addView(title); 
     tLayout.addView(tRow); 
    } 
} 

} 

EDIT: Линия

image.setBackgroundColor(R.drawable.myimage);<br /> 

ли на самом деле должно быть:

image.setImageResource(R.drawable.myimage); 
+0

Нужно меньше говорить, как только я раскомментировать tRow.addView часть он выходит из строя. – phil

+0

Какое исключение вы получаете? Что в логарифме? Что значит «отладчик не может найти ресурс»? – Simon

+0

Это поможет, если вы добавите журнал сбоев. – MByD

ответ

2

Вы пытаетесь установить изображение в качестве фона цвета: Изменить это:

image.setBackgroundColor(R.drawable.myimage); 

к этому:

image.setBackgroundResource(R.drawable.myimage); 
0

Вы не можете установить вытяжку для как фоновый цвет вашего ImageView, вот почему у вас есть ресурс, не найденный исключение на вашем logcat!

image.setBackgroundColor(R.drawable.myimage); 

изменить его к этому:

image.setBackgroundResource(R.drawable.myimage); 

Также попробуйте изменить

public static void createNewsEntries(Activity contextActivity) 

с

public static void createNewsEntries(Context contextActivity) 
+0

Да, я тоже это видел. Фактически эта строка была автоматически исправлена ​​eclipse. Исходная строка:
image.setImageResource (R.drawable.myimage); – phil

+1

Хорошая копия моего ответа :) – IncrediApp

+0

извините, но я так не думаю !!, я забыл упомянуть что-то –

0

Забавный факт:

TableLayout tLayout = (TableLayout) findViewById(R.id.NewsTable); 
    TableRow tRow = new TableRow(this); 
    ImageView image = new ImageView(this); 
    image.setImageResource(R.drawable.myimage); 
    tRow.addView(image); 
    tLayout.addView(tRow); 

Если я поставить этот код прямо в News.Activity он работает ...

+0

см. Мой обновленный ответ, вы должны передать контекст и не объект активности –

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