기본적으로 데이터베이스 정보를 멋지게 표시하는 앱이 함께 제공됩니다.내 ListView가 소스의 새 요소를 표시하지 않는 이유는 무엇입니까?
주요 활동 : 탐색 서랍
public class MainActivity extends FragmentActivity {
public static List<Entry> entryTitles;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MySQLiteHelper db = new MySQLiteHelper(this);
entryTitles= db.getEntryTitles();
.....
}
....
}
조각은
public class PositionsFrag extends Fragment {
public static EntryListAdaptor entryAdapter;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
int i = getArguments().getInt(ARG_ENTRY_NUMBER);
switch(i){
case 0:
entryAdapter = new EntryListAdapter(getActivity(), MainActivity.entryTitles);
lv.setAdapter(entryAdapter);
break;
.....
}
}
}
그리고 마지막으로, 작업 표시 줄의 버튼 중 하나를 클릭하면 사용자가 새로운 필드를 추가 할 수 있도록 새로운 활동을 엽니 다 기입. 새로운 액티비티 막대 (NewActivity.java라고도 함)의 'done'작업 표시 줄 버튼은 이론적으로 새로운 Entry 객체를 만들고이 새 객체를 Entries 데이터베이스에 추가하고 각 항목의 첫 번째 요소를 문자열로 저장해야합니다. 새 목록을 만들고 목록이 업데이트되었음을 entryAdapter에 알립니다.
public class NewActivity extends Activity {
db = new MySQLiteHelper(this);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_done:
db.newEntry(new Entry(title, date, location));
MainActivity.entryTitles= db.getEntryTitles();
PositionsFrag.entriesAdapter.notifyDataSetChanged();
Toast.makeText(getApplicationContext(), db.printFirstTitle(), Toast.LENGTH_SHORT).show();
finish();
....
}
}
}
나는이 토스트가 제대로 첫 번째 항목의 제목 필드를 표시합니다 실행
는하지만 PositionFragment에서 ListView에 결코 (데이터베이스가 적어도 새 항목을 받고 내가 성공적으로 SQLite는 기능을 읽을 작성하지 않았는지 것을 보여주는) 변경.이 기능을 작동시키는 방법이나 더 나은 구조에 대한 제안은 크게 감사하겠습니다.
건배!
응답 해 주셔서 감사합니다. 이 코드를 사용하려고했지만 코드가 너무 잘못 작성되었을 수 있습니다. NewActivity는 MainActivity의 onOptionsItemSelected() 함수에서 호출되므로 onActivityResult가 MainActivity에 있어야합니다. 맞습니까? – jimmygoska
예, 다른 단편/활동의 UI 요소를 수정하여 하나의 단편/활동을 만들 수 없으므로 그 요소가 안정적으로 작동 할 것으로 기대할 수 있습니다. – Kai
내 코드를 돌아볼 시간이 없지만 적어도 내가 잘못 될 곳을 알고 있습니다. 감사! 15 명의 담당자가 아니기 때문에 대답을 유용하다고 표시 할 수는 없습니다. – jimmygoska