【发布时间】:2018-07-17 15:48:53
【问题描述】:
好的,所以我在活动中有一个片段。我正在尝试将启动活动的意图中的 int 传递给该片段,但由于某种原因,我从片段的参数中得到了 0。我做错了什么?
这是负责传递 int 的代码:
public void initActivity() {
toolbar = findViewById(R.id.toolbar);
resName = getIntent().getExtras().getString("Name");
int ResID = getIntent().getExtras().getInt("ResID");
Log.d("SplitBill","From initActivity(): We have received ResID as " + ResID);
Bundle bundle = new Bundle();
bundle.putInt("ResID", ResID);
Log.d("SplitBill",bundle.getInt("ResID") + " has been put into the bundle.");
PlaceholderFragment pf = new PlaceholderFragment();
pf.setArguments(bundle);
toolbar.setTitle(resName);
}
这是负责接收 int 的代码:
Activity activity = getActivity();
Bundle args = getArguments();
MenuViewModel viewModel = ViewModelProviders.of(this, new MenuViewModelFactory(activity.getApplication(), args.getInt(“ResID”))).get(MenuViewModel.class);
如果我在上面的 args.getInt() 中手动输入一个数字,代码就可以正常工作,我只是在努力从上面设置的参数中获取 int。
抱歉,格式错误,我是在手机上输入的。
MenuActivity 中的 ResID 声明:private int ResID;
【问题讨论】:
-
你在哪里调用你的
receiving int代码? -
在片段的onCreateView()方法中
-
你能仔细检查一下
ResID在initActivity()中是否不为零 -
我刚刚添加了将 ResID 打印到 logcat 的代码,并且可以确认它永远不会返回零
-
再一次,你从未使用过这个片段,你只需要创建新实例并设置参数,而已经使用的实例(通过布局)没有参数
标签: android android-fragments viewmodel