8

次のように、あるアクティビティから別のアクティビティにデータを転送するインテントを作成しています。

Intent intent = new Intent(this, ActivityHighScore.class);
    intent.putExtra("USERNAME", username);
    intent.putExtra("PLAYERMOVES", playerMoves);

    this.startActivity(intent);

次に、このデータが設定されていなくても他のソースから開始できるため、アクティビティの開始時にこのデータがすべて存在するかどうかを確認したいと思います。このステートメントを使用しています:

        Bundle bundle = getIntent().getExtras();

    if (!bundle.getString("USERNAME").equals(null) && bundle.getInt("PLAYERMOVES") != 0){
        String username = bundle.getString("USERNAME");
        int playerMoves = bundle.getInt("PLAYERMOVES");
        addHighScore(username, playerMoves);

    }   

しかし、これはnullポインター例外を引き起こし、私は完全にその方法を確信しています。Stringsと.equals()を理解し始めていると思いましたが、それは...どんな助けでも大歓迎です。ありがとう。

4

3 に答える 3

18

交換

Bundle bundle = getIntent().getExtras();

    if (!bundle.getString("USERNAME").equals(null) && bundle.getInt("PLAYERMOVES") != 0){
        String username = bundle.getString("USERNAME");
        int playerMoves = bundle.getInt("PLAYERMOVES");
        addHighScore(username, playerMoves);

    } 

 if (getIntent().getStringExtra("USERNAME") != null && (getIntent().getIntExtra("PLAYERMOVES", 0) != 0){
        String username = bundle.getString("USERNAME");
        int playerMoves = bundle.getInt("PLAYERMOVES");
        addHighScore(username, playerMoves);

  } 
于 2012-05-20T14:47:37.823 に答える
3

まあ、私は同様の問題を抱えていました。私の場合、自分がに等しいNullPointerExceptionかどうかを確認したときに発生しました。bundle.getString()null

私の場合、これが私がそれを解決した方法です:

Intent intent = getIntent();        
if(intent.hasExtra("nomeUsuario")){
    bd = getIntent().getExtras();
    if(!bd.getString("nomeUsuario").equals(null)){
        nomeUsuario = bd.getString("nomeUsuario");
    }
}
于 2015-03-31T16:19:38.517 に答える
-1

あなたがしている方法は正しいです。フラグメントが正しいフラグメントオブジェクトに置き換えられていないため、nullポインタ例外が発生します。 これが作業コードのActivityクラスです

Bundle bundle = new Bundle();
bundle.putString("message", "helloo");
Home tm = new Home();
tm.setArguments(bundle);
fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.frag,tm).commit();
getSupportActionBar().setTitle("Home");
item.setChecked(true);
drawerLayout.closeDrawers();

フラグメントで受信するためのコード

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
    String myValue = getArguments().getString("message");
    Toast.makeText(getActivity(), myValue, Toast.LENGTH_SHORT).show();
    myview = inflater.inflate(R.layout.fragment_home, container, false);
    return myview;
}

それが役立つかどうか私に知らせてください!

于 2016-08-02T18:52:19.300 に答える