【发布时间】:2014-03-15 14:16:12
【问题描述】:
以下示例取自 BigNerdRanch Android 书籍的第 10 章。 当我的犯罪列表片段开始犯罪片段时,通过额外检索到的 id 与犯罪列表片段中的不同。这会产生空指针异常。此外,在犯罪实验室中,我有一个 if 条件的日志,但它从未被记录,这意味着 if 条件永远不会为真。有人可以帮我解决这个问题吗?
public class CrimeListFragment extends ListFragment {
..
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
Crime c= ((CrimeAdapter)getListAdapter()).getItem(position);
Intent i = new Intent(getActivity(), CrimeActivity.class);
Log.d(TAG, c.getmTitle() + " " + c.getmId());
i.putExtra(CrimeFragment.EXTRA_CRIME_ID, c.getmId());
startActivity(i);
}
..
}
public class CrimeFragment extends Fragment {
..
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UUID crimeId = (UUID)getActivity().getIntent().getSerializableExtra(EXTRA_CRIME_ID);
//mCrime = new Crime();
Log.d(TAG, CrimeLab.get(getActivity()).getCrime(crimeId).getmTitle());
df = DateFormat.getDateInstance();
}
..
}
public class CrimeLab {
..
public Crime getCrime(UUID id){
for (Crime c:mCrimes){
if (c.getmId() == id)
Log.d(TAG, c.getmTitle());
return c;
}
return null;
}
..
}
03-14 18:30:33.649: D/CrimeListFragment(2162): 犯罪 #2 0bf14f8e-8527-4eae-a5a0-c8a19709a4df 03-14 18:30:33.729: D/CrimeFragment(2162):犯罪#0
【问题讨论】:
-
getmId()返回什么数据类型?您可能只需要使用getStringExtra()或getIntExtra()。 -
它的 UUID,这就是为什么可序列化
-
哎呀,是的。对不起。我应该看到的。不确定 Intent 额外,但在您的 if 条件下,我认为您应该使用
equals()而不是==。
标签: android android-intent fragment