2012-03-02 4 views
0

ファイルが作成されているかどうかを確認するクラスを作成しています(ユーザー名とパスワードを持っています)別のクラスにデータを読み込み、FTP経由でサーバーを再チェックします。何らかの理由で、私はそれを動作させることができません、私はすべてを試して、私ができるすべての単一のWebページを読んだが、運がありません。アプリケーションが起動時にクラッシュし、ログイン画面にファイルが存在するかどうかを確認しようとしています

マイコード:

public class LogIn extends Activity implements OnClickListener { 
Button send; 
EditText user; 
EditText pass; 
CheckBox staySignedIn; 
FileOutputStream Fos; 
String a; 
String b; 
String string = a; 
String string2 = b; 

String FILENAME = "userandpass"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.login); 
    send = (Button) findViewById(R.id.bLogIn); 
    user = (EditText) findViewById(R.id.eTuser); 
    pass = (EditText) findViewById(R.id.eTpassword); 
    staySignedIn = (CheckBox) findViewById(R.id.Cbstay); 
    send.setOnClickListener(this); 

    if (staySignedIn.isChecked()) { 

     String a = user.getText().toString(); 
     String b = pass.getText().toString(); 
     File f = new File(FILENAME); 
     try { 
      Fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
      Fos.write(string.getBytes()); 
      Fos.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     File file = getBaseContext().getFileStreamPath(FILENAME); 
     if(file.exists()); 
     Intent i = new Intent(LogIn.this, ChatService.class); 
    } 

} 

public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch (v.getId()) { 
    case R.id.bLogIn: 
     if (pass.length() == 0) 
      Toast.makeText(this, 
        "Try to type in your username and password again!", 
        Toast.LENGTH_LONG).show(); 
     else if (user.length() == 0) 
      Toast.makeText(this, 
        "Try to type in your username and password again!", 
        Toast.LENGTH_LONG).show(); 
     else { 

      String u = user.getText().toString(); 
      String p = pass.getText().toString(); 
      Bundle send = new Bundle(); 
      send.putString("key", u); 
      send.putString("key1", p); 
      Intent a = new Intent(LogIn.this, logincheck.class); 
      a.putExtra("key", u); 
      a.putExtra("key1", p); 
      startActivity(a); 
      Toast.makeText(this, "Were signing you in!", Toast.LENGTH_LONG) 
        .show(); 
      break; 
     } 
    } 

} 
} 

LogCat:

01-19 11:37:17.601: W/dalvikvm(4411): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
    01-19 11:37:17.621: E/AndroidRuntime(4411): FATAL EXCEPTION: main 
    01-19 11:37:17.621: E/AndroidRuntime(4411): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gta5news.bananaphone/com.gta5news.bananaphone.LogIn}: java.lang.NullPointerException 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.os.Handler.dispatchMessage(Handler.java:99) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.os.Looper.loop(Looper.java:123) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at java.lang.reflect.Method.invokeNative(Native Method) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at java.lang.reflect.Method.invoke(Method.java:521) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  
    at dalvik.system.NativeStart.main(Native Method) 
    01-19 11:37:17.621: E/AndroidRuntime(4411): Caused by: java.lang.NullPointerException 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at com.gta5news.bananaphone.LogIn.onCreate(LogIn.java:55) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    01-19 11:37:17.621: E/AndroidRuntime(4411):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
+2

これは55行目ですか? –

+0

これはeclipse Fos.write(string.getBytes())による55行目です。 – TheBlueCat

答えて

1

ライン55は、その後Fosstringのいずれかが初期化されていない

Fos.write(string.getBytes()); 

ある場合。 stringがそれ自体初期化されていないaに初期化されているとすれば、それはそれを説明しています。 stringに適切な値を割り当てる必要があります。

+0

どうすればいいですか?私は既にコードでは、文字列と文字列1が2つの編集テキストフィールドと等しいことを示しました。 – TheBlueCat

+0

いいえ、あなたはしませんでした。 'string = a'という代入をしたところで、' a'は 'null'です。 –

+0

ああ、私はあなたを得ます。だから、文字列に値を割り当てるにはどうすればいいですか? – TheBlueCat

0
Fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 

openFileOutputがnullを返すように見えるため、Fosがnullになり、NullPointerExceptionがスローされているようです。

if(Fos != null) { 
Fos.write(string.getBytes()); 
Fos.close(); 
} check. 

入れるまたはNullpointerExceptionをキャッチ。

+0

はい!これはうまくいきましたが、文字列がファイルに保存されていないか、ファイルが作成されていません。 – TheBlueCat

+0

ファイルが作成されていないようですが、権限が必要でない可能性がありますか? – kosa

+0

このリンクを参照すると、あなたに役立つかもしれませんhttp://stackoverflow.com/questions/4751609/writing-to-the-internal-private-storage-in-android-updated-2-6-12 – kosa

関連する問題