0

私はこの本当に厄介な問題を数日間抱えていましたが、まったく解決できないようです. ファイルを開こうとしているので、プロジェクトのフォルダー.csvにインポートしました。次に、メソッドres/raw/を介してそれを開いて読み取ろうとしていますが、それがまさに.. ファイルを読み取り、使用可能な行で配列を埋めるメソッドを次に示します。getResources()NullPointerException

ここで、 class からActivityObject を作成し、次に classからメソッドを呼び出します。newwordsWordsPlayWithRawFiles()Words

public class Swear_Activity extends Activity implements OnInitListener, OnClickListener {

    private Words newwords;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_swear);
    }
    public void onClick(View view){
        try {
            newwords.PlayWithRawFiles();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            System.out.println("greshka");
            e.printStackTrace();
        }
    }
}

これはエラーが発生するクラスです

public class Words{

    public Word[] wordsArray;
    private String locale = "de";
    
    public Words(String locale) {
        if (locale != null ) {
            this.locale = locale;
        }
    }
    
    Context c;
    public void PlayWithRawFiles() throws IOException  {
        String str="";
        StringBuffer buf = new StringBuffer();          
        int i = 0;
        InputStream is = c.getResources().openRawResource(R.raw.est);
        BufferedReader reader = null;
        try{
            if (is != null) reader = new BufferedReader(new InputStreamReader(is));
        }
        catch(Exception e) {
            System.out.println ("ss");
            e.printStackTrace();
        }
            
        if (is!=null) {                         
            while ((str = reader.readLine()) != null) { 
                Word wd = new Word(1,"str");
                this.wordsArray[i] = wd;
                i++;
            }               
        }       
        is.close();
    }
}

ここにクラスWordがあります

public class Word {
    private int type;
    private String data;

    public Word(int type, String data){
        this.type = type;
        this.data=data;
    }

    public int getType(){
        return this.type;
    }
    public String getData(){
        return this.data;
    }
}

これがスタックトレースです

07-10 13:28:58.558: E/AndroidRuntime(647): 致命的な例外: メイン

07-10 13:28:58.558: E/AndroidRuntime(647): java.lang.NullPointerException

07-10 13:28:58.558: E/AndroidRuntime(647): de.android.swearapp.Swear_Activity.onClick(Swear_Activity.java:32)

07-10 13:28:58.558: E/AndroidRuntime(647): >android.view.View.performClick(View.java:2408) で

07-10 13:28:58.558: E/AndroidRuntime(647): android.view.View$PerformClick.run(View.java:8816) で

07-10 13:28:58.558: E/AndroidRuntime(647): android.os.Handler.handleCallback(Handler.java:587) で

07-10 13:28:58.558: E/AndroidRuntime(647): android.os.Handler.dispatchMessage(Handler.java:92) で

07-10 13:28:58.558: E/AndroidRuntime(647): android.os.Looper.loop(Looper.java:123)

07-10 13:28:58.558: E/AndroidRuntime(647): android.app.ActivityThread.main (ActivityThread.java:4627) で

07-10 13:28:58.558: E/AndroidRuntime(647): java.lang.reflect.Method.invokeNative(ネイティブ メソッド) で

07-10 13:28:58.558: E/AndroidRuntime(647): java.lang.reflect.Method.invoke(Method.java:521) で

07-10 13:28:58.558: E/AndroidRuntime(647): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) で

07-10 13:28:58.558: E/AndroidRuntime (647): com.android.internal.os.ZygoteInit.main (ZygoteInit.java:626) で

07-10 13:28:58.558: E/AndroidRuntime(647): dalvik.system.NativeStart.main(ネイティブ メソッド) で

私は何を間違えましたか?私は本当にこれで立ち往生しています。前もって感謝します!

4

3 に答える 3

2

newwords オブジェクトをインスタンス化したことがありません。

onClick の前に onCreate にこのようなものを追加する必要があります

newwords = new Words("");
于 2012-07-10T13:50:30.947 に答える
0

Context c問題は、 (in Words) 実際の値を与えていないためc.getResources()、NullPointerException がスローされることだと思います。

于 2012-07-10T13:51:28.210 に答える