Android 调用getExtra时,布尔值将自身重置为false
当我为isDeleted boolean调用getExtras.getBoolean(key)时,它会将自身设置为false,即使我传递的是true。关于为什么会发生这种情况有什么见解吗?我尝试了很多其他方法,但没有成功地保持布尔值为真 其他活动:Android 调用getExtra时,布尔值将自身重置为false,android,android-intent,boolean,Android,Android Intent,Boolean,当我为isDeleted boolean调用getExtras.getBoolean(key)时,它会将自身设置为false,即使我传递的是true。关于为什么会发生这种情况有什么见解吗?我尝试了很多其他方法,但没有成功地保持布尔值为真 其他活动: public void deleteWorkout(View view) { intent.putExtra("listPosition", intent.getExtras().getInt("position"));
public void deleteWorkout(View view)
{
intent.putExtra("listPosition", intent.getExtras().getInt("position"));
intent.putExtra("isDeleted", true);
setResult(RESULT_OK, intent);
finish();
}
case(List): {
if(resCode == Activity.RESULT_OK)
{
boolean isDeleted = intent.getExtras().getBoolean("isDeleted");
int listPosition = intent.getExtras().getInt("listPosition");
if(isDeleted)
{
adapter.remove(workoutList.get(listPosition));
adapter.notifyDataSetChanged();
}
}
}
default:
break;
}
主要活动:
public void deleteWorkout(View view)
{
intent.putExtra("listPosition", intent.getExtras().getInt("position"));
intent.putExtra("isDeleted", true);
setResult(RESULT_OK, intent);
finish();
}
case(List): {
if(resCode == Activity.RESULT_OK)
{
boolean isDeleted = intent.getExtras().getBoolean("isDeleted");
int listPosition = intent.getExtras().getInt("listPosition");
if(isDeleted)
{
adapter.remove(workoutList.get(listPosition));
adapter.notifyDataSetChanged();
}
}
}
default:
break;
}
有两种方法可以解决这个问题,并且理解为什么在将来可能会再次让你头痛
putExtras
与putExtra
不同。
那么有什么区别呢
putExtras
希望传入一个包。使用此方法时,您需要使用以下方法将数据拉回:
getIntent().getExtras().getBoolean("isDeleted");
getIntent.getBooleanExtra("isDeleted", false); // false is the default
putExtra需要一个字符串名和一个布尔值。使用此方法时,您需要使用以下方法将数据拉回:
getIntent().getExtras().getBoolean("isDeleted");
getIntent.getBooleanExtra("isDeleted", false); // false is the default
您使用的是两者的混合,这意味着您试图从未实际设置的捆绑包中获取布尔值,因此它使用默认值(false)。有两种方式将数据从一个活动传递到另一个活动 1.将数据添加到意图中 如何放置:
intent.putExtra("listPosition", intent.getExtras().getInt("position"));
intent.putExtra("isDeleted", true);
Bundle bundle = new Bundle();
bundle.putExtra("listPosition", intent.getExtras().getInt("position"));
bundle.putExtra("isDeleted", true);
intent.putExtras(bundle)
如何获得:
int listPosition = getIntent().getIntExtra("listPosition",0);
boolean isDeleted = getIntent().getBooleanExtra("isDeleted",false);
int listPosition = getIntent().getExtras().getInt("listPosition",0);
boolean isDeleted = getIntent().getExtras().getBoolean("isDeleted",false);
2.将数据添加到bundle,并将bundle添加到intent
如何放置:
intent.putExtra("listPosition", intent.getExtras().getInt("position"));
intent.putExtra("isDeleted", true);
Bundle bundle = new Bundle();
bundle.putExtra("listPosition", intent.getExtras().getInt("position"));
bundle.putExtra("isDeleted", true);
intent.putExtras(bundle)
如何获得:
int listPosition = getIntent().getIntExtra("listPosition",0);
boolean isDeleted = getIntent().getBooleanExtra("isDeleted",false);
int listPosition = getIntent().getExtras().getInt("listPosition",0);
boolean isDeleted = getIntent().getExtras().getBoolean("isDeleted",false);
尝试使用
getBooleanExtra
和getIntExtra
尝试以下方法:intent.getBooleanExtra(“isDeleted”,false);提示:无论何时调用getExtras()
它都会创建extras捆绑包的克隆,因此此操作成本相当高。只调用getExtras()
一次或更好只需使用getBooleanExtra()
,getIntExtra()
等。在开关盒中的变量intent
在哪里初始化?啊哈!所以,在未来的情况下,只需选择一个或另一个?是的。这里的关键是要注意,当您调用getIntent().getExtras().getBoolean(
)时,您正在设置一个bundle,然后读取bundle中的一个值,但要使其工作,您需要传递一个bundle而不是boolean:@user3101180,如果我的ans能够解决你的问题并对你有用,那么你可以批准并投票给我的ans。我还没有任何业力。干得好