标签: fragment

ViewPager FragmentPagerAdapter Nullpointer

我使用Android 支持包中的ViewPager来解决此错误.从使用ViewPager教程的水平视图滑动

06-19 13:07:25.950: E/AndroidRuntime(16382): FATAL EXCEPTION: main
06-19 13:07:25.950: E/AndroidRuntime(16382): java.lang.NullPointerException
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.support.v4.app.BackStackRecord.doAddOp(BackStackRecord.java:347)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.support.v4.app.BackStackRecord.add(BackStackRecord.java:342)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:649)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.support.v4.view.ViewPager.populate(ViewPager.java:783)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1016)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.view.View.measure(View.java:12728)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:594)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:376)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.view.View.measure(View.java:12728)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4698)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.widget.FrameLayout.onMeasure(FrameLayout.java:293)
06-19 13:07:25.950: E/AndroidRuntime(16382):    at android.view.View.measure(View.java:12728) …
Run Code Online (Sandbox Code Playgroud)

android fragment android-viewpager

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

Android片段中的自定义属性

我想在Android片段中使用XML定义自定义属性(不使用捆绑其他参数),就像declare-styleable在自定义控件中一样.但是没有带有AttrSet参数的构造函数,所以它可能吗?我可以覆盖public void onInflate(android.app.Activity activity, android.util.AttributeSet attrs, android.os.Bundle savedInstanceState)以获得属性支持吗?

android custom-attributes fragment android-fragments

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

片段方法:attach(),detach(),remove(),replace(),popBackStack()

我对这些功能和它们的目的非常困惑.我观察到,使用新的replace()替换现有的片段.我们可以使用addToBackStack(null)将该片段放在后面的堆栈中,这样我们就可以回到之前显示的片段了.现在当一个片段被添加(或替换) - onAttach()- > onCreate()etc ....片段的方法按顺序调用.

现在,当我们remove()从我们的活动中调用片段时,片段的哪些函数被调用以及按什么顺序?

做什么attach()detach()做什么?是否detach()删除片段?并且这两个时attach()detach()使用时,该片段的功能调用,并且在该阶ΣΔ

还有什么呢popBackStack()?我的意思是当我们popBackStack()从我们的活动中使用片段时调用哪些函数?

什么时候onDestroy()调用?

谢谢.

android fragment android-fragments back-stack

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

如何动画片段删除

我想动画片段的删除.

我试过了:

getSupportFragmentManager().beginTransaction()
    .setCustomAnimations(R.anim.push_down_in, R.anim.push_up_out)
    .remove(myFragment)
    .commit();
Run Code Online (Sandbox Code Playgroud)

但片段就消失了.

我注意到out动画只播放'replace',所以我尝试用这样的空片段替换片段:

getSupportFragmentManager()
    .beginTransaction()
    .setCustomAnimations(R.anim.push_down_in, R.anim.push_up_out)
    .replace(viewId, new Fragment())
.commit();
Run Code Online (Sandbox Code Playgroud)

但它仍然只是消失了.

那么,我如何动画片段的删除?

animation android fragment

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

处理方向更改的最佳做法:Android

我正在通过各种实践来处理线程和AsyncTask的方向更改.我遇到了以下解决方案:

  1. Attach-detach模型:在保留实例的同时为线程和AsyncTask附加和分离活动.(来源:1,2)

  2. 无头片段方式:使用非UI /无头片段执行所有与线程相关的操作,并在配置更改时保留其实例.(来源:1,2)

有没有其他方法来处理这种情况?建议的做法是什么?我问这个是因为我在Android文档的任何地方都找不到通用的解决方案.

multithreading android fragment orientation

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

片段中的SavedInstanceState始终为null

我有一个使用XML(活动中的setContentView())附加到活动的片段.有一个问题,因为我的片段中有非常动态的视图,因此当方向更改时,我必须恢复所有视图状态.

我有问题,因为我正在使用类似的东西:

public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putBoolean("restore", true);
        outState.putInt("nAndroids", 2);
   }
Run Code Online (Sandbox Code Playgroud)

但是在方向更改后调用param Bundle savedInstanceState的方法时(如onCreateView等),我的savedInstanceState始终为null.

我不是Android中的菜鸟,但现在因为这个问题我很生气...

public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    if (savedInstanceState == null) {
        //smth
    } else {
        // smthelse THIS IS NEVER REACHED BECAUSE BUNDLE IS ALWAYS NULL
    }

    getListView().setDivider(getResources().getDrawable(R.drawable.list_divider));
}
Run Code Online (Sandbox Code Playgroud)

android bundle fragment

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

处理Android导航组件中的后退按钮

我想知道如何使用导航控制器正确处理系统后退按钮操作.在我的应用程序中,我有两个片段(例如片段1和片段2),我在fragment1中有一个目标为fragment2的动作.一切都很好,除了一件事 - 当用户按下fragment2中的系统后退按钮时,我想显示一个对话框(例如使用DialogFragment)来确认退出.实现此行为的最佳方法是什么?如果我app:defaultNavHost="true"在我的主机片段中使用它会自动返回忽略我的规则.此外,这个组件是什么?

在此输入图像描述

我应该使用"pop to"吗?

navigation android fragment android-jetpack

33
推荐指数
11
解决办法
3万
查看次数

无法在片段类中获取Action Bar

我有一个活动,里面有三个片段类.尝试从内部更改操作栏标题时出错.如果我尝试使这些类只是公开而不是公共静态,那么当我尝试启动该类时会出现错误.应该很清楚,代码是针对偏好的,尽管这不应该改变任何东西.这是代码:

package com.simon.wikiics;

import android.preference.*;
import android.os.*;
import java.util.*;

public class MainSettingsActivity extends PreferenceActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

}

@Override
public void onBuildHeaders(List<Header> target) {
    loadHeadersFromResource(R.xml.headers, target);
}

//If I don't make the classes static my app force closes when I try to start them
public static class NavigationSettingsActivity extends PreferenceFragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.navigation);
        //The getActionBar() is what is giving me the error
        getActionBar().setTitle("Navigation");

    }
}

public static class InterfaceSettingsActivity …
Run Code Online (Sandbox Code Playgroud)

android class fragment android-actionbar

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

何时使用FragmentTransaction的attach和detach方法

我刚刚通过的文件去attach()detach()方法FragmentTransaction:

attach():在先前已从UI分离后重新附加片段detach(Fragment).这会导致其视图层次结构被重新创建,附加到UI并显示.

嗯,这是什么意思?

  1. 更具体地说,我看到了一个例子:

    mMapFragment = new MapFragment();
    ft.beginTransaction(mMapFragment)
      .attach()
      .add(R.id.container, mMapFragment)
      .commit();
    
    Run Code Online (Sandbox Code Playgroud)

    我删除了attach()并再次尝试:我没有发现任何差异.什么是attach在这个例子吗?与此相比有何不同:

    ft.beginTransaction()
      .add(R.id.container, mMapFragment)
      .commit();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果上面的例子是不够好,以示区别.我只是想知道做的时候,我们需要调用attach()detach()明确?如果你可以解释添加/删除/替换方面的差异会更好.

android fragment fragmenttransaction

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

防止Android中的片段恢复

我们正在使用Fragments,我们不需要在重新创建Activity时自动恢复它们.但每当调用Activity::onCreate(Bundle savedInstanceState)- > 时super.onCreate(savedInstanceState),即使我们对这些片段使用setRetainInstance(false),也会恢复片段.

而且,在那些Fragments Fragment.performCreateView()被直接调用而不经过Fragment::onAttach()等等.另外,一些字段在恢复内部为空Fragment...

有谁知道如何阻止Android恢复片段?

PS我们知道,如果为配置更改重新创建活动,可以通过添加到清单a来完成ndroid:configChanges="orientation|screenSize|screenLayout.但是在自动内存清理的情况下重新创建活动呢?

android garbage-collection memory-management fragment recreate

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