Articles of android fragments

如何在偏好片段中改变文本样式

我已经创build了文本视图的偏好屏幕。用户可以改变文本视图样式喜欢字体,颜色,大小在首选项screen.so它将显示在文本视图,我已经在偏好屏幕创build,但它不工作。如果它的偏好活动,我们可以使用setContentview,在片段我不知道如何通过视图.. public final class TestFragment2 extends PreferenceFragment { static TextView textView; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.preferences); LayoutInflater inflater = LayoutInflater.from(getActivity()); View view = inflater.inflate(R.layout.customprefernce, null); textView = (TextView) view.findViewById(R.id.TextViewSample); final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager() .findPreference("bold"); checkboxPref .setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { public boolean onPreferenceChange(Preference preference, Object newValue) { // Log.d("MyApp", "Pref " + preference.getKey() […]

FragmentManager.getFragmens()。size()不会减lessFragmentTransaction.remove(Fragment)

经过一段时间寻找我的NPE的原因,我注意到,尽pipeFragmentTransaction.remove(片段)真的删除片段,由FragmentManager.getFragments()返回的列表的大小仍然相同。 该屏幕截图显示了删除片段后此方法返回的内容: http://img.androidcookie.com/android/erro fm.PNG 该列表有3个片段,为什么大小仍然是4?

使用嵌套的片段和animation对象

我有片段A,其中包含两个片段,片段B和片段C.我想使用getChildFragmentManager()将片段B添加到片段A,然后使用此代码通过卡片翻转animationreplace片段C getChildFragmentManager() .beginTransaction() .setCustomAnimations( R.animator.card_flip_right_in, R.animator.card_flip_right_out, R.animator.card_flip_left_in, R.animator.card_flip_left_out) .replace(R.id.fragment_new_word_container, new FragmentCardBack()) .addToBackStack(null) .commit(); 在Android 4.2中引入的嵌套片段在早期版本中使用它,我们可以使用支持库。 一切都很好。 问题是支持库中的FragmentManager不支持对象animation。 所以它似乎我只有2个选项: 目标api级别4.2和更高,这将花费我超过一半的我的客户。 这不适合我! 不使用嵌套的片段,因为animation是我的应用程序的重要组成部分。 那么有什么其他的方式,我可以使用支持库嵌套片段与翻转卡animation?

Android的片段与animation交易导致白色闪光

我有两个片段。 片段A最初是在视野中。 当用户按下button时,使用下面的方法将片段Banimation化为视图。 当我popup片段B时,它将animation从视图中移出,但是当它完成时,屏幕将闪烁白色。 不知道是什么原因造成的,似乎只发生在kit-kat而不是棒棒糖上。 正在使用的animation是向上滑动和下滑在xml中定义的animation。 @Override public void loadFragment(BaseFragment fragment, boolean replace, boolean addToBackStack, int animIn, int animOut, int animPopIn, int animPopout) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); if (animIn != -1 && animOut != -1 && animPopIn != -1 && animPopout != -1) { transaction = transaction.setCustomAnimations(animIn, animOut, animPopIn, animOut); } else if (animIn […]

在更改权限设置后,从最近的任务重新打开时,onCreate()会被调用

问题标题可能听起来很复杂,但这是我的情况。 我有一个活动内的地图片段。 简单。 打开存储权限以允许显示地图,工作正常。 通过按Homebutton背景应用程序,然后closures存储权限,并从最近的任务,应用程序崩溃打开应用程序。 问题不在于调用主机Activity的onResume(),而是在主机Activity以及Map碎片的onCreateView()上调用onCreate()。 因此它抛出exception。 看起来应用程序进程在更改权限时被终止,从而重新创build了活动。 09-24 14:42:55.071: E/AndroidRuntime(12918): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 09-24 14:42:55.071: E/AndroidRuntime(12918): Caused by: java.lang.NullPointerException: Attempt to write to field 'int android.support.v4.app.Fragment.mNextAnim' on a null object reference 09-24 14:42:55.071: E/AndroidRuntime(12918): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:718) 09-24 14:42:55.071: E/AndroidRuntime(12918): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1489) 09-24 14:42:55.071: E/AndroidRuntime(12918): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:548) 从活动super.onStart()

在android中使用viewpager的SearchView与多个片段

我想实现一个ViewPager中存在多个片段的SearchView。 所有的fragemnts包含列表,我想过滤这些列表,并创build一个新的ListView,根据它属于哪个片段对结果进行分类。 但我的searchView不能使用一个片段。 这是我的主要活动: package com.codeon.directory; import android.app.SearchManager; import android.content.Context; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuInflater; import android.view.View; import com.codeon.directory.fragments.FiveFragment; import com.codeon.directory.fragments.FourFragment; import com.codeon.directory.fragments.OneFragment; import com.codeon.directory.fragments.SixFragment; import com.codeon.directory.fragments.ThreeFragment; import com.codeon.directory.fragments.TwoFragment; import java.util.ArrayList; import java.util.List; /** * Created by Nikhil […]

应该持有人参考适配器?

我正在阅读来自Google的示例代码,代码是这样的: public class AttractionListFragment extends Fragment { … private class AttractionAdapter extends RecyclerView.Adapter<ViewHolder> implements ItemClickListener { public List<Attraction> mAttractionList; private Context mContext; public AttractionAdapter(Context context, List<Attraction> attractions) { super(); mContext = context; mAttractionList = attractions; } @Override public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { Log.d("TEST", "onCreateViewHolder"); LayoutInflater inflater = LayoutInflater.from(mContext); View view = inflater.inflate(R.layout.list_row, parent, […]

与FragmentManager.popBackStack相关的NullPointerException。 如何解决?

我有一个Android应用程序,我有一个活动和一堆碎片。 使用Crashlytics,我收到了以下Exception的单个实例: Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.FragmentManager.popBackStack(java.lang.String, int)' on a null object reference at com.company.app.Fragment$7$2.onClick(Fragment.java:397) at android.view.View.performClick(View.java:5197) at android.view.View$PerformClick.run(View.java:20926) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:145) at android.app.ActivityThread.main(ActivityThread.java:5942) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194) 产生这个错误的代码是: okButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); // The next line […]

ButterKnife:ViewPager上片段重新创build后的空视图

我正在使用Butterknife(8.2.1)的最新版本,我遇到了一个问题:在使用带有3个碎片的ViewPager时,当碎片被重新创build时,所有视图都变为空! 前两个碎片,没问题,但是当我刷到第三个,回到第一个碎片时,每个视图变为空。 可能是什么问题呢? 我添加了ButterKnife.setDebug(true); 获得更多关于这个问题的信息,我得到这个: D/ButterKnife: Looking up view binder for com.example.overview.MeetupOverviewFragment D/ButterKnife: HIT: Cached in view binder map. D/ButterKnife: Looking up view binder for com.example.attendees.MeetupAttendeesFragment D/ButterKnife: HIT: Cached in view binder map. D/ButterKnife: Looking up view binder for com.example.attendees.ControllerListAttendees$ItemViewHolder D/ButterKnife: HIT: Cached in view binder map. D/ButterKnife: Looking up view binder for com.example.attendees.ControllerListAttendees$ItemViewHolder D/ButterKnife: […]

片段过渡支持25.1.0与Recyclerview

我正在使用片段转换为回收站视图设置animation,使用25.0.1支持库和转换对于推送和popup目标片段正常工作。 我用来生成交易的代码是: supportFragmentManager.beginTransaction() .replaceAddToBackStack(R.id.content, fragment) .addSharedElement(fragment, commonViews) .commit() 现在我试图更新到支持库的25.1.0版本,并且popup式animation崩溃,因为转换没有find原始视图,并且正在崩溃: E/MessageQueue-JNI: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference at android.support.v4.app.FragmentTransitionCompat21.setNameOverridesOptimized(FragmentTransitionCompat21.java:339) at android.support.v4.app.FragmentTransition.configureTransitionsOptimized(FragmentTransition.java:232) at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:111) at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2143) at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:822) at android.support.v4.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:775) at android.support.v4.app.FragmentActivity.onBackPressed(FragmentActivity.java:178) at App.ui.base.BaseActivity.onBackPressed(BaseActivity.kt:23) … 但是,如果我禁用“优化”,它工作正常。 supportFragmentManager.beginTransaction() .replaceAddToBackStack(R.id.content, fragment) .addSharedElement(fragment, commonViews) .setAllowOptimization(false) .commit() 我做错了什么? 编辑:我用来包装共享元素的扩展: .replaceAddToBackStack fun<T : […]