我正在创建一个将数据从一个活动传输到另一个活动的意图,如下所示:
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);
}
但这导致了一个空的pointerexception,我完全确定如何。我以为我正在处理Strings和.equals(),但我认为......任何帮助都会非常感激。感谢。
答案 0 :(得分: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);
}
答案 1 :(得分:2)
好吧,我遇到了类似的问题。在我的情况下,当我检查NullPointerException
是否等于bundle.getString()
时发生null
。
以下是我解决它的方法,在我的情况下:
Intent intent = getIntent();
if(intent.hasExtra("nomeUsuario")){
bd = getIntent().getExtras();
if(!bd.getString("nomeUsuario").equals(null)){
nomeUsuario = bd.getString("nomeUsuario");
}
}
答案 2 :(得分:-1)
您正在执行的方法是正确的。空指针异常即将发生,因为该片段未被正确的片段对象替换。 以下是工作代码活动类
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;
}
请告诉我它是否有帮助!