好的。所以我得到了我的數據庫的一部分(元素的名稱)以列表視圖顯示。我現在希望能夠選擇其中一個元素並將選擇傳遞給一個新的片段,從數據庫中調用與該元素有關的其他信息(即原子序數,質量,熔點等)。我如何將選定的元素傳遞給我的新片段。這是我目前正在嘗試的:數據庫:從列表視圖到佈局
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);
。
感謝您的幫助。
看起來'mDB'是'null'。你在哪裏初始化? –
@MattiasBuelens你的意思是我在哪裏打開數據庫?我在一個名爲elementList的片段中打開它,並將我的數據庫中的名稱列加載到列表視圖中。它通過點擊那個listview來調用elementFragment。我假設由於數據庫已經打開,我不需要再次調用它。我已經添加了一個openDB();到elementFragment,但通知沒有區別。 –