2012-03-01 8 views
-1

別のクラスから2つの文字列を取得する別のクラスを開始しましたが、これまで1つしか設定していませんでしたが、しかし、私は2つの編集テキストを記入し、それをクラッシュするヒット提出します。ボタンがクリックされたときにアプリケーションがクラッシュする(2つのクラス間で文字列を渡す)

ファーストクラス(ランチャークラス)

package com.gta5news.bananaphone; 

import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 

import android.R.string; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

public class LogIn extends Activity implements OnClickListener { 
Button send; 
EditText user; 
EditText pass; 
CheckBox staySignedIn; 
FileOutputStream Fos; 
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); 
    try { 
     Fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
     Fos.close(); 
    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    if (staySignedIn.isChecked()) { 

     String a = user.getText().toString(); 
     String b = pass.getText().toString(); 
     File f = new File(FILENAME); 
     try { 
      Fos = new FileOutputStream(f); 
      //Write some Data 
      Fos.close(); 
     } catch (FileNotFoundException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


    } 

} 

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("key", p); 
      Intent a = new Intent(LogIn.this, logincheck.class); 
      startActivity(a); 
      Toast.makeText(this, "Were signing you in!", Toast.LENGTH_LONG) 
        .show(); 
      break; 
     } 
    } 

} 
} 

セカンドクラス:

package com.gta5news.bananaphone; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class logincheck extends Activity { 
String GotBread; 
TextView user; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.logincheck); 
    user = (TextView) findViewById(R.layout.logincheck); 
    SetUp(); 

} 

public void SetUp() { 
    // TODO Auto-generated method stub 
    Bundle GotData = getIntent().getExtras(); 
    GotBread = GotData.getString("key"); 
    user.setText(GotBread); { 


} 

} 
} 

LogCat:あなたのメインの活動に

01-19 08:53:56.641: E/AndroidRuntime(3319):  ... 11 more 
01-19 08:56:28.561: E/AndroidRuntime(3384): FATAL EXCEPTION: main 
01-19 08:56:28.561: E/AndroidRuntime(3384): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.gta5news.bananaphone/com.gta5news.bananaphone.logincheck}: java.lang.NullPointerException 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.os.Handler.dispatchMessage(Handler.java:99) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.os.Looper.loop(Looper.java:123) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.ActivityThread.main(ActivityThread.java:4627) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at java.lang.reflect.Method.invokeNative(Native Method) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at java.lang.reflect.Method.invoke(Method.java:521) 
01-19 08:56:28.561: E/AndroidRuntime(3384): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at dalvik.system.NativeStart.main(Native Method) 
01-19 08:56:28.561: E/AndroidRuntime(3384): Caused by: java.lang.NullPointerException 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at com.gta5news.bananaphone.logincheck.SetUp(logincheck.java:24) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at com.gta5news.bananaphone.logincheck.onCreate(logincheck.java:17) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
01-19 08:56:28.561: E/AndroidRuntime(3384):  ... 11 more 
+0

例外がスローされますか? – MMM

+0

スタックトレースお願い – edthethird

+0

logcatから例外を投稿できますか? –

答えて

0

のonCreateメソッドに

そして

使用と同様のバンドルを取得します

Intent i = new Intent(Login.this,logincheck.class); 
i.putExtra("key", user); 
i.putExtra("key1", pass); 
startActivity(i); 

そして

user = (TextView) findViewById(R.layout.logincheck); 

代わりの

user = (TextView) findViewById(R.id.logincheck); 

ので、ユーザは、よりproffed、失敗することができますが、これはのために働く必要があり、私はit..itを解決する方法をUAの手掛かりを与えることをしようとヌル

0

あなたがバンドルを作成し、コンテンツを挿入していますあなたはそれを意図に送っていません。

2番目のアクティビティを開始する前に、インテントの情報を入力する必要があります。このような何かを:

Intent a = new Intent(LogIn.this, logincheck.class); 
    a.putExtra("key", u); 
    a.putExtra("key", p); 
    startActivity(a); 
+0

まだ動作しませんでした。 – lrobb

+0

同じ例外が発生していますか? –

+0

http://pastebin.com/tA8KHzHS – lrobb

0

ですuが..

Intent i = new Intent(LogIn.this, logincheck.class); 
i.putExtra("username", sUsername); 
i.putExtra("password", SPassword); 

は新しい活動で保存されたデータを取得してみてくださいするには、次の

String newString; 
if(extras == null) { 
     sUsernameInNewActivity = null; 
     sPasswordInNewActivity = null; 
} else { 
     sUsernameInNewActivity = extras.getString("username"); 
     sPasswordInNewActivity = extras.getString("password"); 
} 

btw。あなたのコード内の悪い習慣の多く.. :(私はそれが簡単に読むことの悩みを持っている... 例えば:

  • はあなたが別のスコープと型が、まったく同じ名前を持つ2つの変数を持っている(それを見つけることを試みます)
  • uは、このコードか???

    send.putString( "キー"、U)で何かに参加したいんでした。 send.putString( "キー" に、p);

どのようにそれらを得ると思った後で?一緒に/別に?

希望で解決します。歓声

+0

コードの大部分が間違っていましたか?構文エラーがあります。 – lrobb

+0

私の構文エラーを指摘できますか..? sPasswordに誤字があります(最初の文字は大文字ではありません)が、他の問題は何かありますか? – Ewoks

関連する問題