0

在我的程序中,我试图使用 ImageView 显示来自文件的图像。我已声明 ImageView 与 ImageView XML 文件相关,并将值设置为使用 BitmapFactory 的文件中的图像。毕竟,我仍然收到 NullPointerException,因为 ImageView 变量显然仍然为空。如果您有任何想法或建议,请告诉我,谢谢!

这是我正在谈论的代码:

public void imageViewMethod(String file){
    Logger log = Logger.getLogger("com.example.myclass");

    try {

    File fileName = new File(root, file);
    if(fileName.exists()){
    String dirFileName = fileName.toString();
    Toast.makeText(getApplicationContext(), dirFileName, Toast.LENGTH_LONG).show();
    ImageView iv = (ImageView)findViewById(R.id.image);

    iv.setImageBitmap(BitmapFactory.decodeFile(dirFileName));
    super.setContentView(iv);
    }
    }catch(Exception e){
        Toast.makeText(getApplicationContext(), "Hit Exception", Toast.LENGTH_LONG).show();
        log.log(Level.SEVERE, "uncaught exception", e);
    }
}

以及对应的 XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/image"
    android:layout_width="match_parent"
    android:layout_height="match_parent" 

android:layout_margin="5dp">
</ImageView>
4

4 回答 4

0

您是否正确设置了contentView()? 看来你用super.setContentView(iv);错地方了。setContentView(R.layout.imageviewLayout.xml)onCreate()活动类中使用。

检查活动类中是否有以下代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.imageviewLayout.xml);

HTH。

于 2012-06-30T18:41:52.997 回答
0

看起来你没有在 oncreate 中设置 ContentView 你必须在获取 ImageView 之前设置 ContentView

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.correspondingXML);
于 2012-06-30T18:42:18.883 回答
0

在设置 contentview 之前,您无法获取 imageview。

于 2012-06-30T18:42:56.930 回答
0

如果您想在 Activity 运行时更改布局,请尝试使用 LayoutInflater:

LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.image_layout, null);
setContentView(view);

现在findViewById(R.id.image)可以工作了。

于 2012-06-30T18:48:42.490 回答