相关疑难解决方法(0)

Android Fragment生命周期超过方向更改

使用兼容包以使用Fragments定位2.2.

重新编码活动以在应用程序中使用片段后,我无法获得方向更改/状态管理工作,因此我创建了一个带有单个FragmentActivity和单个片段的小型测试应用程序.

方向更改的日志很奇怪,多次调用片段OnCreateView.

我显然缺少一些东西 - 比如分离片段并重新连接它而不是创建一个新实例,但是我看不到任何可以指示我出错的文档.

请问有人能说清楚我在做错了吗.谢谢

方向更改后的日志如下.

Initial creation
12-04 11:57:15.808: D/FragmentTest.FragmentTestActivity(3143): onCreate
12-04 11:57:15.945: D/FragmentTest.FragmentOne(3143): OnCreateView
12-04 11:57:16.081: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState null


Orientation Change 1
12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): onSaveInstanceState
12-04 11:57:39.031: D/FragmentTest.FragmentTestActivity(3143): onCreate
12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView
12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState not null
12-04 11:57:39.031: D/FragmentTest.FragmentOne(3143): OnCreateView
12-04 11:57:39.167: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState null


Orientation Change 2
12-04 11:58:32.162: D/FragmentTest.FragmentOne(3143): onSaveInstanceState
12-04 11:58:32.162: D/FragmentTest.FragmentOne(3143): onSaveInstanceState
12-04 11:58:32.361: D/FragmentTest.FragmentTestActivity(3143): onCreate
12-04 11:58:32.361: D/FragmentTest.FragmentOne(3143): OnCreateView
12-04 11:58:32.361: D/FragmentTest.FragmentOne(3143): OnCreateView->SavedInstanceState not null
12-04 11:58:32.361: …
Run Code Online (Sandbox Code Playgroud)

android orientation android-fragments android-activity

115
推荐指数
3
解决办法
9万
查看次数

关闭片段中的自动旋转

我有一个PictureFragment,用于从我的缩略图中选择全屏显示图片.它工作正常,但是当我旋转我的智能手机时,图片也会旋转并变得非常难看,因为它的高度现在是它的实际宽度等等.如何关闭此片段的旋转?我一直在阅读如何为整个活动做这件事但是对于剩下的活动而言,我希望保持自动旋转.或者,如果这也很容易,我怎样才能设法在旋转时刻意缩放图片以保持其纵横比?

我感谢任何帮助.

android rotation android-fragments

14
推荐指数
1
解决办法
4572
查看次数

ListFragment和onActivityCreated调用了两次

我有一个listFragment这是我的onActivityCreated:

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    if (savedInstanceState != null) {
        utenti=savedInstanceState.getParcelableArrayList("array");
    }else{
        threadutenti= (GetUtenti) new GetUtenti(this.getActivity(), utenti).execute();
    }
Run Code Online (Sandbox Code Playgroud)

当我旋转我的设备时,我有第一个savedInstanceState非null(我知道了)但是在使用onActivityCreated null调用onActivityCreated之后!为什么?我想在ListFragment上获取我的对象utenti而不是我的活动..

android android-fragments

5
推荐指数
1
解决办法
3395
查看次数

如何处理方向更改以便Fragment不加载?

EditTextUI中的一行获得焦点时,将DatePickerFragment启动用户输入日期.

在方向更改时,如果EditText线具有焦点和先前输入的日期(这样length() > 0),我不希望片段自动显示.

有没有办法修改或添加代码,以便如果新创建活动并且该EditText行具有焦点,它将不会自动启动 DatePickerFragment

做某事是不是一个好主意onResume()

或做的东西savedInstanceState()!=null

public class Activity extends AppCompatActivity {
...
EditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
...
    if (hasFocus && (EditText.getText().length() == 0)) {
       DatePickerFragment newFragment = new DatePickerFragment();
       newFragment.show(getSupportFragmentManager(), "datePicker");
    }
    else if (hasFocus && (EditText.getText().length() > 0)) {
       ...
       DatePickerFragment newFragment = new DatePickerFragment();
       newFragment.show(getSupportFragmentManager(), "datePicker");
    }
 }
});
}
Run Code Online (Sandbox Code Playgroud)

android android-datepicker android-fragments

5
推荐指数
1
解决办法
738
查看次数

为什么Android中的设备旋转后,Fragment中的onCreateView被调用两次?

我有简单的活动和片段交易。我注意到在Fragment的oncreateView上的配置更改被两次调用。为什么会这样呢?

活动代码在这里:

    @Override
protected void onCreate(Bundle savedInstanceState) {
    System.out.println("Activity created");

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    FragmentManager manager = getSupportFragmentManager();

    BlankFragment fragment = new BlankFragment();

    addFragmentToActivity(manager,
            fragment,
            R.id.root_activity_create
    );
}

public static void addFragmentToActivity (FragmentManager fragmentManager,
                                          Fragment fragment,
                                          int frameId)
                                           {

    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(frameId, fragment);
    transaction.commit();
    }
Run Code Online (Sandbox Code Playgroud)

片段代码在这里:

public class BlankFragment extends Fragment {


public BlankFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {      
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_blank, …
Run Code Online (Sandbox Code Playgroud)

android rotation fragment

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