小编Man*_*iac的帖子

更新片段参数的最佳实践?

我知道"newInstance"-Pattern(实例化新Android片段的最佳实践).但是,如果另一个片段更改数据,如何更新片段的这些参数?

我知道片段/活动之间的回调方法,但这些回调不会更新参数?!

例如:在创建片段时,我使用bundle将URI传递给它.然后另一个片段通过第一个片段上的changeUri(Uri uri)方法回调来更改此URI.如果然后片段被重新创建(例如由于屏幕旋转),它将使用参数包中的第一个URI而不是后来更新的uri,对吗?

解决这个问题的最佳做法是什么?我是否必须手动将其存储在savedInstanceState中,并在使用时决定是使用instanceState还是arguments-bundle?

我正在寻找一种处理我的片段参数的标准方法,所以我想我会采用这种方法(伪代码):

private Uri arg1;

public static Fragment newInstance(Uri arg1) {
  create bundle
  create fragment instance
  set bundle to fragment
  return fragment
}

private void onCreate(Bundle savedInstance) {
  if(savedInstance != null) {
    arg1 = savedInstance.uri
  }
}

private Uri getUri() {
  if(arg1 == null) {
    arg1 = getArguments.uri
  }
  if(arg1 == null) {
    arg1 = defaultValue
  }
}
Run Code Online (Sandbox Code Playgroud)

所以我有一个简单统一的方式来访问我的论点.每次我需要这个论点时,不必使用if-else-hassle.

你怎么看待这件事?

android android-fragments

31
推荐指数
2
解决办法
2万
查看次数

在片段替换时显示/隐藏Android软键盘

我有一个片段活动.让我们说一个包含事物列表的列表片段.现在我想让用户添加一个东西,所以我使用FragmentManager用一个带有EditText的插入片段替换列表片段.EditText具有焦点,光标闪烁.但软键盘无法打开.反之亦然:如果用户输入了新内容并将其添加到列表中,我将插入片段替换为列表片段.但是,虽然没有EditText,键盘也不会关闭.

实现这个的正确方法是什么?我不敢相信我必须在所有过渡时手动显示和隐藏键盘?!

android fragment android-softkeyboard android-fragments

23
推荐指数
3
解决办法
1万
查看次数