Articles of android fragments

保留活动之间的片段状态

它可能保留活动之间的Fragment ? 比方说,我有活动A与片段F_Left放置在左侧,片段F_Right放置在右侧。 如果我想启动一个新的活动,并保持片段F_Left …我怎么能做到这一点? 我可以在活动之间保留Fragment F_Left状态吗? 请注意,我想启动一个新的活动,因为Fragment F_Left是我的应用程序菜单和Fragment F_Right完全改变用户操作的上下文…我的应用程序有很多的操作,所以它是有意义的每个操作有一个活动。 我知道有可能在一个Activity保留Fragment ,但是由于Fragment生命周期与容器Activity密切相关,我不知道这是否可能在活动之间保持Fragment状态。

在片段中获取屏幕宽度和高度

如果我扩展我的应用程序的活动,我可以得到宽度和高度: DisplayMetrics displaymetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int height = displaymetrics.heightPixels; int wwidth = displaymetrics.widthPixels; 要么 Display display = getWindowManager().getDefaultDisplay(); stageWidth = display.getWidth(); stageHeight = display.getHeigth(); 但目前我扩展fragement,我不能使用上面的代码来获得宽度。

Android:我如何更新我的textView在片段

我正在尝试使用片段来构build我的第一个适当的Android应用程序。 我有一个主要的XML。 它由两个垂直片段组成,顶部片段仅由两个TextView组成。 其中第一个包含静态文本,第二个包含一个我最终将从SQLdynamic获取的值。 如果我把这是我的MainActivity.java然后它愉快地更新我的第一个片段的TextView的值: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Set the Text to try this out TextView t = (TextView)findViewById(R.id.viewItem); t.setText("Text to Display"); } 我有两个片段XML和一个Java支持每个,所以我想把这个领域的设置到支持片段的Java而不是MainActivity的Java。 当我把它放在片段中看起来像这样: public class FragmentMainTop extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){ // — inflate the layout for this fragment return inflater.inflate(R.layout.fragmentmt, […]

Android应用程序崩溃(片段和XML的onclick)

second_fragment.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/f2_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView android:id="@+id/f2_textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/f2_tv" /> <Button android:id="@+id/f2_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="button" android:text="@string/f2_bttn" /> SecondFragment.java public class SecondFragment extends Fragment { FragmentInterface iface; public interface FragmentInterface { public void buttonPressed(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.second_fragment, container, false); } @Override […]

后退button即使在使用FragmentTransaction.addToBackStack()

没有其他的问题,我已经阅读了stackoverflow已经能够帮助我的问题。 据我所知,我正在做的一切正确。 我有一个带有碎片的主/细节stream。 在创build主要活动时,主片段使用以下代码加载: Fragment frag; frag = new MainListFragment();//<– **the master fragment** FragmentManager fm = getFragmentManager(); FragmentTransaction transaction = fm.beginTransaction(); transaction.replace(R.id.fragment_container, frag); Log.d("My Debug Bitches", "stack:" + fm.getBackStackEntryCount()); transaction.commit(); 主片段有一个ListView ; 点击一个列表项就会显示如下细节片段: @Override public void onListItemClick(ListView listView, View view, int position, long id) { super.onListItemClick(listView, view, position, id); FragmentManager fm = getFragmentManager(); FragmentTransaction transaction […]

Android – SupportMapFragment与GoogleMaps API 2.0给IllegalArgumentException

我正在尝试使用为Android提供的最新的Map API 2.0。 我正在使用支持库,因为我想支持Android 2.2。 以下是我的代码: 主要活动类 public class MainActivity extends FragmentActivity { public FragmentManager fManager ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fManager = getSupportFragmentManager(); Button showMapButton = (Button) findViewById(R.id.showMapButton); showMapButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { loadMapFragment(); } }); } private void loadMapFragment() { MapPageFragment plotterFragment = new MapPageFragment(); […]

ArrayAdapter的getView()方法没有被调用

我对android开发很陌生。 我正在尝试构build带有标签(通过片段添加)的应用程序。 在其中的一个片段中,我试图显示一个列表。 这个列表已经使用ListAdapter填充,我已经从ArrayAdapter扩展,并且我重载了getView()方法。 这是我的片段 public class tabcontentActivity extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (container == null) { return null; } View v = (LinearLayout) inflater.inflate(R.layout.tablayout, container, false); ListView lv = (ListView) v.findViewById(R.id.listview1); ListViewAdapter adapter = new ListViewAdapter(container.getContext(), android.R.layout.simple_list_item_1, R.id.textview1); adapter.notifyDataSetChanged(); lv.setAdapter(adapter); return v; } } 这就是我已经实现了ListAdapter public […]

Android如何停止刷新选项卡上的碎片更改

我有以下代码: MainActivity.java package com.erc.library; import java.io.BufferedInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.URL; import java.net.URLConnection; import android.app.ActionBar; import android.app.ActionBar.Tab; import android.app.FragmentTransaction; import android.content.SharedPreferences; import android.content.res.Resources; import android.graphics.Color; import android.os.Bundle; import android.os.Environment; import android.os.StrictMode; import android.support.v4.app.FragmentActivity; import android.support.v4.view.ViewPager; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.widget.TextView; import android.widget.Toast; import com.erc.sayeghlibrary.adapter.TabsPagerAdapter; public class MainActivity extends FragmentActivity […]

NullPointerexception在android.support.v4.app.FragmentManagerImpl.makeInactive

我在Android支持库中看到一个奇怪的exception – 堆栈跟踪如下。 任何想法可能导致这个? 我无法在我的任何设备上重现该例外情况,但Google Play DevConsole中似乎有不less可见的例外情况。 java.lang.NullPointerException at android.support.v4.app.FragmentManagerImpl.makeInactive(FragmentManager.java:1133) at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1044) at android.support.v4.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1171) at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:582) at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1416) at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:420) at android.os.Handler.handleCallback(Handler.java:608) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:156) at android.app.ActivityThread.main(ActivityThread.java:5045) 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:784) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) at dalvik.system.NativeStart.main(Native Method)

android棒棒糖animation故障

在运行Android 5(Lollipop)的设备中,我使用了默认的布局animation。 我正在使用具有多个片段的活动,这些片段在运行时使用默认片段pipe理器进行replace。 当replace旧的片段时,我想使用一个stream畅的UIstream动的animation。 在棒棒糖设备上,animation就像预期的那样工作,但在运行最新的操作系统的设备上,片段故障之间的animation: 我尝试使用默认的animationXML标记 android:animateLayoutChanges="true" 因为它不工作,我改变它使用这个代码没有任何效果 mTransaction = mManager.beginTransaction(); mTransaction.setCustomAnimations(android.R.animator.fade_in, android.R.animator.fade_out); mTransaction.remove(mFragment); mTransaction.add(R.id.container, mFragment, "fragment"); mTransaction.commit(); 我已经在不同的设备和android模拟器上testing了代码。 奇怪的是,它运行预棒棒糖和运行最新的操作系统(5.0.1)的android模拟器上的预期。 但在运行Android 5.0的Nexus 4和Nexus 5等设备上无法运行 有什么build议么? 任何帮助? 提前致谢 编辑: 这似乎是一个错误取决于使用的设备。 我已经testing了不同设备上的代码(Samsung Galaxy S4,HTC(One mini2,One M8,Desire S),Nexus 4&5),并且只出现在Google Nexus设备上。 编辑 解决animation问题的一个解决方法是通过禁用硬件加速 <application android:hardwareAccelerated="false"> 标记在应用程序清单。 但是使用这个会使应用程序非常慢。 解 解决此问题的解决scheme是设置背景图像/颜色/绘制到活动。 看到