gpt4 book ai didi

android - 更新 fragment 不起作用

转载 作者:可可西里 更新时间:2023-11-01 18:47:52 24 4
gpt4 key购买 nike

我正在学习 Android,在尝试开发应用程序时遇到了以下情况:

我有一个 Activity,它有两个 Fragment:ReminderListFragmentFilterListFragment。第一个 fragment 有一个提醒列表,第二个 fragment 有一个过滤器列表,其中包含在每个过滤器中注册的项目的名称和数量。但是,当我排除某些提醒时,FilterListFragment 值不会更新。当我删除其中一个过滤器(在这种情况下,它会删除所选过滤器的所有记录)时,会发生同样的事情,它不会更新提醒列表。

enter image description here

FilterListFragment代码:

    @Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getGroupId() == R.id.context_menu_category) {
// Used to verify it it is the right context_menu //Gets the item
// position and gets the category in that position:
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Category category = ((CategoryFilter) lvFilters.getAdapter().getItem(info.position)).getCategory();

// Switch between the options in the context menu(Edit and Delete)
switch (item.getItemId()) {
case R.id.edit:
// Passes the current reminder to be edited via Intent and
// Invokes edit method
DialogFragment newFragment = EditCategoryDialogFragment.newInstance(category);
newFragment.show(getFragmentManager(), "" + R.string.dialog_editcategory_title);
updateListView();
return true;
case R.id.delete:
// Invokes delete method
try {
// Deletes from the bank;
Controller.instance(getActivity().getApplicationContext()).deleteReminderByCategory(category);
Controller.instance(getActivity().getApplicationContext()).deleteCategory(category);
updateListView();
return true;
} catch (DBException e) {
Log.e(TAG, e.getMessage());
}
updateListView();
return true;
default:
return super.onContextItemSelected(item);
}

}
return super.onContextItemSelected(item);
}

ReminderListFragment 代码:

@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getGroupId() == R.id.context_menu_reminder) {
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
Reminder reminder = (Reminder) contextMenuAdapter.getItem(info.position);
switch (item.getItemId()) {
case R.id.edit:
Intent editIntent = editIntent(reminder);
editIntent.putExtra("id", reminder.getId());
editIntent.putExtra("text", reminder.getText());
editIntent.putExtra("details", reminder.getDetails());
startActivity(editIntent);
updateListView(null);
return true;
case R.id.delete:
try {
Controller.instance(getActivity().getApplicationContext()).deleteReminder(reminder);
} catch (DBException e) {
Log.e(TAG, e.getMessage());
}
updateListView(null);
return true;
default:
return super.onContextItemSelected(item);
}
}
return super.onContextItemSelected(item);
}

最佳答案

您应该通过 Activity 与第二个 fragment 进行通信。当你在一个 fragment 中做一些会影响第二个 fragment 的事情时,你应该在你的 Activity 中调用一些方法来调用第二个 fragment 中的更新方法。例如 Activity :

public class MainActivity extends Activity(){
private Fragment fragmentOne, fragmentTwo;

public void updateFragmentTwo(){
fragmentTwo.updateListView();
}
}

fragment :

public class FirstFragment extends Fragment{


public void updateFragmentTwo(){
((MyActivity)getActivity()).updateFragmentTwo();
}
}

关于android - 更新 fragment 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50450479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com