Articles of android fragments

findFragmentById返回null

当我用我的片段的id调用findFragmentById()时,它返回null。 让我告诉你代码。 activity_main.xml MainActivity.java private static final int LOGIN = 0; private static final int MAIN = 1; private static final int FRAGMENT_COUNT = MAIN +1; private Fragment[] fragments = new Fragment[FRAGMENT_COUNT] protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager fm = getSupportFragmentManager(); fragments[LOGIN] = fm.findFragmentById(R.id.login_fragment); fragments[MAIN] = fm.findFragmentById(R.id.main_fragment); FragmentTransaction transaction = fm.beginTransaction(); for (Fragment […]

在旋转和背面恢复MapView的状态

背景 我有一个更大的应用程序,我有新的谷歌地图API的几个问题。 我试图用不同的问题描述它,但由于它看起来太复杂,我决定开始一个新项目,尽可能简单并尝试重现问题。 所以在这里。 情况 我正在使用Fragments并希望将MapView放入其中。 我不想使用MapFragment 。 我准备的示例项目可能不是很漂亮,但我试图让它尽可能简单,它必须包含原始应用程序中的一些元素(再次简化)。 我有一个Activity和我的自定义Fragment with MapView以编程方式添加。 Map包含一些点/ Markers 。 单击Marker ,显示InfoWindow并单击它会导致在内容中显示下一个Fragment (带有replace()函数)。 问题 我有两个问题: 当显示带Markers的Map ,屏幕旋转导致Class not found when unmarshalling使用我的自定义MyMapPoint类Class not found when unmarshalling错误时MyMapPoint类 – 我不知道为什么以及它意味着什么。 我单击Marker然后单击InfoWindow 。 在此之后我按下硬件后退按钮。 现在我可以看到Map但没有Markers并且以0,0点为中心。 代码 主要活动 public class MainActivity extends FragmentActivity { private ArrayList mPoints = new ArrayList(); @Override protected void onCreate(Bundle savedInstanceState) […]

带有ChildFragmentManager的FragmentStatePagerAdapter – FragmentManagerImpl.getFragment导致NullPointerException

编辑2 我现在设法通过使用https://code.google.com/p/android/issues/detail?id=42601#c10中的技巧摆脱了错误,这就是为什么我的上次编辑被置于顶部的原因我的问题 但这导致了下一个错误: java.lang.NullPointerException at android.support.v4.app.FragmentManagerImpl.getFragment(FragmentManager.java:569) at android.support.v4.app.FragmentStatePagerAdapter.restoreState(FragmentStatePagerAdapter.java:211) at android.support.v4.view.ViewPager.onRestoreInstanceState(ViewPager.java:1281) at android.view.View.dispatchRestoreInstanceState(View.java:12043) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2688) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2694) at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2694) at android.view.View.restoreHierarchyState(View.java:12021) at android.support.v4.app.Fragment.restoreViewState(Fragment.java:425) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:949) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4800) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:798) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:565) at dalvik.system.NativeStart.main(Native Method) 现在我不知道在哪里继续…… 编辑0 – […]

任何示例显示如何使用自己的按钮或Facebook按钮在Android中使用Facebook SDK 4.0登录?

是否有任何教程或示例显示如何使用Facebook SDK 4.0在Android中使用自己的Button登录? 我没有到达任何地方并使用Facebook开发者网站很难理解。如下所示,当调用FBlogin按钮时,如果用户尚未登录或登录,我想检查登录我希望访问令牌获取Facebook个人资料信息,用户喜欢。 FBlogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Facebook login Code to get profile info and user likes } }); 我也试过loginButton Facebook。 但它在xml中显示错误: – java.lang.NoClassDefFoundError: Could not initialize class com.facebook.login.widget.LoginButton at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) at org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:413) at org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:105) at com.android.tools.idea.rendering.LayoutlibCallback.loadView(LayoutlibCallback.java:176) at android.view.BridgeInflater.loadCustomView(BridgeInflater.java:206) at android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:131) at […]

为什么要调用片段onCreateView,onCreate,onActivityCreated

我有一个应用程序,处理片段和ViewPager。 我在ViewPager中有三个片段。 当你在它们之间切换时,它总是导致其他两个片段调用它们的onCreateView方法。 仅在创建FragmentActivity时如何才能执行一次? 我已经阅读了一些问题并尝试了解决方案,但片段仍然具有相同的行为。 ListFragment onCreate调用了两次 onCreate()和onCreateView()调用的不仅仅是需要的(片段) 这是一些代码,如果它可以帮助你,伙计们: 主要活动: public class StartingActivity extends FragmentActivity implements View.OnClickListener { ViewPager viewPager; CirclePageIndicator pageIndicator; Button discount; Button qrCode; Button pay; TabHost tabHost; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.starting_layout); viewPager = (ViewPager) findViewById(R.id.pager); if (savedInstanceState == null) { Fragment firstPage = Fragment.instantiate(this, FindTovarFragment.class.getName()); Fragment secondPage = Fragment.instantiate(this, […]

obj Fragment错误的第二个参数typesfind’Android.support.V4.app.Fragment。’ 需要’Android.app.Fragment’

我无法理解为什么我的objFragment给了我支持经理的问题,我收到了这个错误: Error:(101, 17) error: no suitable method found for replace(int,android.support.v4.app.Fragment) method FragmentTransaction.replace(int,android.app.Fragment,String) is not applicable (actual and formal argument lists differ in length) method FragmentTransaction.replace(int,android.app.Fragment) is not applicable (actual argument android.support.v4.app.Fragment cannot be converted to android.app.Fragment by method invocation conversion) 它就是在这行上的objFragment上发生的: .replace(R.id.container, objFragment) 这是我的完整代码: import android.app.ActionBar; import android.app.Activity; import android.app.FragmentManager; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import […]

膨胀类片段出错 – 重复id / illegalargumentexception?

我正在尝试创建一个我正在构建的应用程序从主要活动中获取搜索词,返回结果,然后使结果可以被点击,以便可以从每个结果中查看详细信息。 我这样做是通过使用MainActivity,ResultsActivity和PlaceActivity,然后是ListFragmentClickable(扩展ListFragment)。 如果手机朝向纵向模式,则结果列表应该是可见的,只有在单击结果时才会查看详细信息。 如果手机是横向的,则在选择项目时,应在列表右侧popup详细信息窗口。 在运行时,我收到一个错误,上面写着“错误膨胀类片段”。 我不知道是什么导致它,我很乐意帮助摆脱它。 我的ListFragmentClickables由我的ResultsActivity调用,它位于: public class ResultsActivity extends FragmentActivity implements ListFragmentClickable.OnItemSelectedListener{ private ArrayAdapter mAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_results_view); //Receive searchTerm from MainActivity Intent intent = getIntent(); String searchTerm = intent.getStringExtra(MainActivity.SEARCH_TERM); mAdapter = new ArrayAdapter(this, R.layout.item_label_list); FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); FactualResponderFragment responder = (FactualResponderFragment) fm.findFragmentByTag(“RESTResponder”); […]

IllegalStateException:无法更改Fragment的容器ID

Android平台:3.1 我试图将一个片段从容器A移动到容器B.下面是完成此操作的代码: private void reattach(int newContainerId, Fragment frag, String tag) { if (frag == null || !frag.isAdded() || (frag.getId() == newContainerId)) { return; } final FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.remove(frag); //stacco il frammento dal container A ft.commit(); fm.executePendingTransactions(); ft = fm.beginTransaction(); ft.add(newContainerId, frag, tag); //attacco il frammento sul container D ft.commit(); […]

通过片段中的Intent启动片段

我想发布一个新片段来查看一些数据。 目前,我有一个主要活动,其中包含一堆操作栏选项卡,每个选项卡都是一个片段。 所以,在一个标签片段中,我有一个按钮,chartButton。 我的onclicklistener都设置了它,这是onClick方法: public OnClickListener chartsListener = new OnClickListener() { @Override public void onClick(View v) { Intent chartFragment = new Intent(); startActivity(chartFragment); } }; 现在,正如我所说,这个监听器属于扩展Fragment的类。 所以,我想通过意图更换整个屏幕来启动一个新的片段(chartsFragment)。 当用户点击回来时,它会将它们带回标签和主要活动。 这是我的图表片段: public class chartsFragment extends Fragment { public View onCreateView() { //LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE); return (inflater.inflate(R.layout.chartfragment, null)); } } […]

Android:Fragments:setContentView替代方案

我正在尝试使用fragments重写现有项目以在平板电脑上移植我的应用程序。 我正在用fragments替换活动。 问题是我不知道setContentView方法的等价物是什么? 有没有办法创建Fragment’s视图,除了重写onCreateView ?