Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法中的全局值变为null_Java_Android - Fatal编程技术网

Java 方法中的全局值变为null

Java 方法中的全局值变为null,java,android,Java,Android,我已经创建了一个名为membercurmbr的整个类的私有成员 该活动(而不是片段,因为它在frament类中)有一个listview 有一些成员的贡献。 我在这个列表上还有一个上下文菜单。单击贡献时,我需要一个(自定义)对话框来显示成员的详细信息。(成员ID是贡献对象的一部分。) @覆盖 public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息){ Log.d(“FRGCOTIZ02”,“

我已经创建了一个名为
membercurmbr的整个类的私有成员
该活动(而不是片段,因为它在frament类中)有一个listview
有一些成员的贡献。
我在这个列表上还有一个上下文菜单。单击贡献时,我需要一个(自定义)对话框来显示成员的详细信息。(成员ID是贡献对象的一部分。)

@覆盖
public void onCreateContextMenu(ContextMenu菜单,视图v,ContextMenu.ContextMenuInfo菜单信息){
Log.d(“FRGCOTIZ02”,“创建ctxt菜单”);
AdapterView.AdapterContextMenuInfo信息=(AdapterView.AdapterContextMenuInfo)菜单信息;
String[]menuItems=getResources().getStringArray(R.array.ar\u菜单\u ctxt\u参与者);
//获取所选成员
贡献curCotis=(贡献)((列表视图)v.getItemAtPosition(信息位置));
参与者p=新参与者(helper.getDBItem(DBHelper.TABLE_参与者,
DBHelper.COL_ID,curCotis.getParticipant();
curMbr=新成员(helper.getDBItem(DBHelper.TABLE_成员,DBHelper.COL_ID,p.getMember());
对于(int i=0;i
在方法
onCreateContextMenu
中,我可以获取成员并显示其ID。 但是在方法
applyContextMenuSelection
中,有一个异常,表示meber为null! 有趣的是,我在这个方法中使用了另一个变量,它工作得很好。不同之处在于,该变量是在创建片段时设置的。
如何解决这个问题?

我研究代码已经有一段时间了,我唯一能想到的是这个问题与contextmenu的使用有关。在我看来,当菜单操作应该被执行时,变量被设置回原来的状态。再说一次,我对此不太确定

因此,到目前为止,我找到的唯一解决方案是将淡水河谷保持在“更高”的环境中: 当我仍然可以读取值时

getActivity().getIntent().putExtra(HomeActivity.ID_ENTRY, curMbr.getId_());
当我想用它的时候

final String mbrID = getActivity().getIntent().getStringExtra(HomeActivity.ID_ENTRY);

遵循代码流程(调试),并检查是否确实为该类实例设置了值。Java没有全局变量,所以我只是假设您谈论的是实例变量。@Stultuske对不起,我的意思是类的成员,所有方法都应该访问该类。关于流,我甚至在控制台上放了一些日志来查看流。当我设置member的值时,我可以在控制台上获得它的ID。指定方法
applyContextMenuSelection
开头的日志位于后面。此时,
curMbr
的值是
null
,当然不是android自动将该值设置回
null
。您是否还有其他代码显示为
curMbr=null
?或者其他分配新值的内容?甚至更晚,例如,
onPause
或so@PhoenixBlue你确定是同一个实例吗?@Stultuske我只声明了一次对象,编译没有问题。因此,即使我没有正确检查,也应该告诉我这是同一个实例!我想。。。
final String mbrID = getActivity().getIntent().getStringExtra(HomeActivity.ID_ENTRY);