【问题标题】:Android : intent putExtra causing errorAndroid:意图 putExtra 导致错误
【发布时间】:2015-03-19 14:55:02
【问题描述】:

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

发送类

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)

【问题讨论】:

  • 你初始化inputWord了吗
  • .MainActivity.&lt;init&gt;(MainActivity.java:35)
  • 这种情况只发生在 TwoPlayer 点击?
  • 是的,输入词只发生在 TwoPlayer 点击,OnePlayer 点击仍然崩溃
  • 检查您的 MainActivity 或发布第 35 行,因为该类正在创建错误。

标签: android android-intent


【解决方案1】:

您是否注册了您的编辑文本

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我已经定义了inputWord,上面附上完整代码
    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多