- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个扩展了 AccountAuthenticatorActivity 的 LoginActivity。此 Activity 有几个 fragment ,即 androidx.fragment.app.Fragments。问题来 self 无法调用的 fragment :
((LoginActivity) getActivity()).setAccountAuthenticatorResult(intent.getExtras());
因为 LoginActivity 扩展了 AccountAuthenticatorActivity,后者扩展了 android.app.activity 但 getActivity() 返回 androidx.fragment.app.FragmentActivity ,它无法转换为我的 LoginActivity。如果我使用 android.app.Fragment 我无法使用 androidx Fragment 的 getViewLifecycleOwner() 等方法。那么这里的解决方案是什么?
更新:
虽然委托(delegate)模式可以解决这个问题,但这个问题有一个有趣的答案:
最佳答案
我认为一种解决方案是委托(delegate)模式。在这种技术中,对象向外部表达某些行为,但实际上将实现该行为的责任委托(delegate)给关联的对象。为了实现委托(delegate)模式,您应该使用如下接口(interface):
public interface Delegate extends Serializable {
void setResult(Intent intent);
}
那么AccountAuthenticatorActivity应该实现这个接口(interface)并在setResult内部调用该方法。
public void setResult(Intent intent){
setAccountAuthenticatorResult(intent.getExtras());
}
你的 Fragment 类应该是这样的:
public class MYFragment extends Fragment {
Delegate delegate;
public static MYFragment newInstance(Delegate delegate){
MYFragment fragment = new MYFragment();
Bundle bundle = new Bundle();
bundle.putSerializable("key", delegate);
fragment.setArguments(bundle);
return fragment;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.my_fragment,container,false);
delegate = (Delegate) getArguments().getSerializable(<your_key>);
delegate.setResult(<your_intent>);
return view;
}
关于androidx Activity 无法转换为 AccountAuthenticatorActivity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59226978/
由于我在我的应用程序中使用操作栏而不是菜单,因此在我的 AccountAuthenticatorActivity 实现中没有显示操作栏或菜单。其他 Activity 显示操作栏没有问题。 我不确定这是
我有一个扩展了 AccountAuthenticatorActivity 的 LoginActivity。此 Activity 有几个 fragment ,即 androidx.fragment.ap
我正在尝试编写自己的 Authenticator 并将其用作两个不同应用程序的库:A 和 B。我关注了这篇文章:http://udinic.wordpress.com/2013/04/24/write
我正在按照教程制作身份验证器:http://blog.udinic.com/2013/04/24/write-your-own-android-authenticator/ 登录 Activity 需
如何将 getSupportFragmentManager() 传递给 AccountAuthenticatorActivity 中的外部库? 我需要使用 android-styled-dialogs
当我使用支持包时,是否可以通过 AccountAuthenticatorActivity 使用 fragment ? AccountAuthenitactorActivity 不是 FragmentA
我是一名优秀的程序员,十分优秀!