好的。所以我已经获得了我的数据库的一部分(元素的名称)以显示在列表视图中。我现在希望能够选择其中一个元素并将选择传递到一个新片段中,从数据库中调用与该元素相关的其余信息(即原子序数、质量、熔点等)。如何将所选元素传递到我的新片段中。这是我目前正在尝试的:
private void selectElement(int position){
elementFragment fragment = new elementFragment();
fragment.loadElement(position);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
}
然后让它加载与它相关的其余信息?数据库中的每个条目都有一个我希望将其加载到的特定视图,但也愿意尝试将其加载到自定义列表视图中。(在查看专辑内容时,我会寻找与 Google Music Play 应用程序相对相似的外观)
这就是我现在正在玩的东西。
public void loadElement(int position) {
mPosition = position;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View viewElement = inflater.inflate(R.layout.fragment_element_detail, container, false);
Cursor c = myDB.getRow(mPosition);
String name = DataBaseHelper.KEY_NAME;
String[] fromFieldNames = new String[]
{DataBaseHelper.KEY_NAME, DataBaseHelper.KEY_ATOMIC_NUMBER, DataBaseHelper.KEY_ATOMIC_WEIGHT,
DataBaseHelper.KEY_OXIDATION, DataBaseHelper.KEY_BOILING_POINT,
};
elementName = (TextView) viewElement.findViewById(R.id.nameElement);
elementName.setText(name);
return viewElement;
}
我继续删除了一些字段以帮助清理它。
我遇到的最后一个错误是当我在 elementFragment 中调用 Cursor 时,由于某种原因它继续失败。这是 logcat 的副本。
08-28 07:37:20.712: E/AndroidRuntime(1093): FATAL EXCEPTION: main
08-28 07:37:20.712: E/AndroidRuntime(1093): java.lang.NullPointerException
08-28 07:37:20.712: E/AndroidRuntime(1093): at table.periodic.elementFragment.onCreateView(elementFragment.java:33)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.Fragment.performCreateView(Fragment.java:1785)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:887)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1059)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.BackStackRecord.run(BackStackRecord.java:682)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1437)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.FragmentManagerImpl$1.run(FragmentManager.java:443)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.os.Handler.handleCallback(Handler.java:725)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.os.Handler.dispatchMessage(Handler.java:92)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.os.Looper.loop(Looper.java:158)
08-28 07:37:20.712: E/AndroidRuntime(1093): at android.app.ActivityThread.main(ActivityThread.java:5751)
08-28 07:37:20.712: E/AndroidRuntime(1093): at java.lang.reflect.Method.invokeNative(Native Method)
08-28 07:37:20.712: E/AndroidRuntime(1093): at java.lang.reflect.Method.invoke(Method.java:511)
08-28 07:37:20.712: E/AndroidRuntime(1093): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
08-28 07:37:20.712: E/AndroidRuntime(1093): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
08-28 07:37:20.712: E/AndroidRuntime(1093): at dalvik.system.NativeStart.main(Native Method)
elementFragment.Java:33 对应Cursor c = myDB.getRow(mPosition);
于我的代码。
谢谢您的帮助。