0

私のプログラムでは、ImageView を使用してファイルから画像を表示しようとしています。ImageView が ImageView XML ファイルに関連付けられていることを宣言し、値を BitmapFactory を使用してファイルからの画像に設定しました。このすべての後、ImageView 変数がまだ null であるため、まだ NullPointerException を受け取っています。アイデアやアドバイスがありましたら、お知らせください。よろしくお願いします。

これが私が話しているコードです:

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

アクティビティの実行中にレイアウトを変更したい場合は、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 に答える