相关疑难解决方法(0)

片段中onCreate(),onCreateView()和onActivityCreated()的区别和用法

什么是之间的差异onCreate(),onCreateView()以及onActivityCreated()将它们各自用于片段和什么?

android oncreate android-lifecycle android-fragments fragment-lifecycle

298
推荐指数
3
解决办法
13万
查看次数

屏幕旋转后恢复TextView的状态?

在我的应用程序中我有TextViewEditText.两者都有数据.当屏幕方向更改EditText剩余数据时,TextView数据将被清除.

有人可以帮助我找到保留数据的方法TextView吗?

android onconfigurationchanged android-layout android-orientation

102
推荐指数
4
解决办法
6万
查看次数

为什么要使用Fragment #setRetainInstance(boolean)?

我发现Fragment #setRetainInstance(true)令人困惑.这是从Android Developer API中提取的Javadoc :

public void setRetainInstance(boolean retain)

控制是否在活动重新创建(例如从配置更改)中保留片段实例.这只能用于不在后栈中的片段.如果设置,则在重新创建活动时,片段生命周期会略有不同:

  • onDestroy()不会被调用(但是onDetach()仍然会被调用,因为片段正在与其当前活动分离.
  • 因为片段没有被重新创建,所以不会调用onCreate(Bundle).
  • onAttach(活动)和onActivityCreated(捆绑)仍然被调用.

问题:作为开发人员,您如何使用它,为什么它会使事情变得更容易?

android android-lifecycle android-fragments

64
推荐指数
4
解决办法
5万
查看次数

setRetainInstance不保留实例

我正在尝试使用setRetainInstance()但它似乎不适合我!=(.我将问题简化为最简单的版本:

我有一个带有TextView和Button的片段.

当按下按钮时,TextView的初始文本是"我正在等待",文本变为"Hello!"

那是我的代码:

片段:

public class SayHelloFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.say_hello_layout, container);
        final TextView text = (TextView) view.findViewById(R.id.textView1);
        view.findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                text.setText("Hello!");

            }
        });
        return view;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        setRetainInstance(true);
    }

}
Run Code Online (Sandbox Code Playgroud)

活动:

public class MainActivity extends FragmentActivity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

}
Run Code Online (Sandbox Code Playgroud)

活动的布局:

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android" …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments

4
推荐指数
1
解决办法
5415
查看次数