尝试在另一个类中添加imageview时,Android应用程序崩溃

时间:2012-05-28 10:59:30

标签: android android-imageview

我最近开始在Android编程,我遇到了一个小问题。
我想做的是: 我有NewsActivity和NewsRows.class(在同一个包中)。
因此,新闻活动只会创建一个新的NewsRows对象,并告诉它用新行填充TableLayout 只要我尝试从资源中添加图像,它就能正常工作......应用程序只会不断崩溃 调试器告诉我它无法找到资源,但我无法找到原因!

我的代码在这里:
新闻活动

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);
    }
}

}

编辑: 第一行

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

实际上应该是:

image.setImageResource(R.drawable.myimage);

3 个答案:

答案 0 :(得分:2)

您正尝试将图像设置为背景颜色: 改变这个:

 image.setBackgroundColor(R.drawable.myimage);

到此:

 image.setBackgroundResource(R.drawable.myimage);

答案 1 :(得分:0)

您不能将drawable设置为ImageView的背景颜色,这就是您在logcat上找到资源未找到异常的原因!!

 image.setBackgroundColor(R.drawable.myimage);

将其更改为:

image.setBackgroundResource(R.drawable.myimage);

还尝试更改此

public static void createNewsEntries(Activity contextActivity) 

public static void createNewsEntries(Context contextActivity)

答案 2 :(得分: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中就可以了......