0

私はアンドロイド開発が初めてです。次のリンクからソースファイルをダウンロードしました

" http://android-er.blogspot.in/2012/07/implement-custom-linearlayout-for.html "が、エミュレータで実行しようとすると表示される

java.lang.NullPointerException at com.example.androidhorizontalscrollviewgallery.MainActivity.onCreate(MainActivity.java:27)

私のMainActivity.javaコードは以下の通りです:

package com.example.androidhorizontalscrollviewgallery;

import java.io.File;
import android.os.Bundle;
import android.app.Activity;
import android.content.Context;

public class MainActivity extends Activity {

MyHorizontalLayout myHorizontalLayout;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myHorizontalLayout = (MyHorizontalLayout)findViewById(R.id.mygallery);


    File targetDir=getDir("Pictures",Context.MODE_PRIVATE);

    String targetPath=targetDir+ "/homepage/";
    File targetDirector = new File(targetPath);

    File[] files = targetDirector.listFiles();

    for(File f : files){

        myHorizontalLayout.add(f.getAbsolutePath());
    }


    }
}

ここで、コンピューターの「Libraries\Pictures\homepage」パスに画像を保存しました。ギャラリーの画像を取得したかったのですが、できませんでした。この例外の原因がわかりません 誰かが解決策を教えてください

4

3 に答える 3

0

これを試して..

File targetDir=getDir("Libraries\Pictures\homepage",Context.MODE_PRIVATE);
 String targetPath=targetDir.toString();
于 2013-03-18T11:40:07.597 に答える
0

例外から、27 行目にヌル ポインターがあります。これは、反復しているファイル オブジェクトがヌルであることを意味します。そのオブジェクトを取得するには listFiles メソッドを使用しますが、listFiles メソッドは null を返すことがあります。アプリのクラッシュを避けるために、null があるかどうかを確認する必要があります。以下の例を参照してください。また、File クラスのドキュメントも参照してください。

if (files == null) {
    // handle case where the file object is not a directory
}
else {
for(File f : files){
        myHorizontalLayout.add(f.getAbsolutePath());
    }
}
于 2013-03-18T11:40:14.293 に答える
0

コンピューターのパスから画像を直接取得することはできないと思います。

その画像をアプリケーションの drawable または assests フォルダーにコピーする必要があります。

または、画像は、デバイスまたはエミュレーター ギャラリー、またはその他のフォルダーのいずれかに存在する必要があります。ただし、テストするデバイスまたはエミュレーターにある必要があります。

使用したチュートリアルのこの行を参照してください。

String ExternalStorageDirectoryPath = Environment
      .getExternalStorageDirectory()
      .getAbsolutePath();

String targetPath = ExternalStorageDirectoryPath + "/test/";

したがって、これはデバイスの SD カード パス(外部ストレージ パス) です。

于 2013-03-18T11:49:40.267 に答える