Android:intent putExtra导致错误

时间:2015-03-19 14:55:03

标签: android android-intent

我有2个活动,使用putExtra intent将String变量从on转移到另一个。我在发件人活动的onclick方法中使用了两个按钮,一个按钮从另一个类中的数组中检索一个单词并将其发送到接收活动。另一个按钮从editText字段发送String。但是,我收到一个错误,任何帮助表示赞赏。

发送课程

public class TitleScreen extends Activity implements OnClickListener {

Button onePlayer, twoPlayer, play;
EditText inputWord;
String b;


WordDifficulties wordDiff = new WordDifficulties();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_title_screen);

    onePlayer = (Button) findViewById(R.id.OnePlayer);
    twoPlayer = (Button) findViewById(R.id.TwoPlayer);
    play = (Button) findViewById(R.id.Continue);

    inputWord = (EditText) findViewById(R.id.enterWord);
    inputWord.setVisibility(View.GONE);
    play.setVisibility(View.GONE);

    onePlayer.setOnClickListener(this);
    twoPlayer.setOnClickListener(this);
    play.setOnClickListener(this);

}

@Override
public void onClick(View v) {

    if (v.getId() == R.id.OnePlayer) {

        Intent myIntent = new Intent(TitleScreen.this, MainActivity.class);
        myIntent.putExtra("gameWord", wordDiff.getRandomWord());
        startActivity(myIntent);
        finish();

    } else if (v.getId() == R.id.TwoPlayer) {
        onePlayer.setVisibility(View.GONE);
        twoPlayer.setVisibility(View.GONE);
        inputWord.setVisibility(View.VISIBLE);
        play.setVisibility(View.VISIBLE);

    } else if (v.getId() == R.id.Continue){

        // if no word is inputed then game will not start 
        if(inputWord.getText().toString().trim().length() == 0){
            Toast.makeText(getApplicationContext(), "Enter a word",
                    Toast.LENGTH_SHORT).show();
        } else{
            Intent myIntent = new Intent(TitleScreen.this, MainActivity.class);
            myIntent.putExtra("gameWord", inputWord.getText().toString());
            startActivity(myIntent);
            finish();
        }
    }
  }
}

在onCreate方法中接收活动

    Intent myIntent = getIntent();
    secretWord = myIntent.getStringExtra("gameWord");

这是logCat

Shutting down VM
FATAL EXCEPTION: main
Process: com.example.hunglikeanandroid, PID: 3431
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.hunglikeanandroid/com.example.hunglikeanandroid.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
atandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
at android.app.ActivityThread.access$800(ActivityThread.java:144)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5221)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
at com.example.hunglikeanandroid.MainActivity.<init>(MainActivity.java:35)
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.Class.newInstance(Class.java:1572)
at android.app.Instrumentation.newActivity(Instrumentation.java:1065)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2199)

2 个答案:

答案 0 :(得分:0)

您是否注册了您的edittext

inputWord=(EditText)findViewById(R.id.inputWord);

因为错误显示NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference

答案 1 :(得分:0)

将代码if(inputWord.getText().toString().trim().length() == 0)更改为if(inputWord.toString().equals(""))