Articles of android fragments

标签导航的最佳做法?

我正在寻找使用sherlock操作栏的标签导航的最佳做法。 什么是正确的方法来改变片段,并添加片段到后台堆栈和清除后台堆栈时,另一个选项卡被选中。 有没有什么好的例子或开源项目显示如何做到这一点?

什么时候应该在片段中获得宽度视图

我在LinearLayout中以编程方式添加View(button).LinearLayout由Fragment中的XML进行布置。 我想获得button的宽度,但总是返回0。 我GOOGLE了这个问题, getWidth只能在WindowFocusChanged上工作。 public void onWindowFocusChanged(boolean hasFocus) { } 但是Fragment没有这个方法。 如何获得在片段中的查看宽度?

setOnClickListener(新的OnClickListener()不工作在片段

我正在NAavigation Drawer的Afrage上工作.Andi将Activity的代码复制到片段中执行。 我已经这样做了,布局是可见的,但没有一个button操作在该片段活动下工作。 你能告诉我我做错了什么吗? FragmentTwo.java public class FragmentTwo extends Fragment { Button blog,fb,twitter,mail; ImageView dateimg; private boolean snet; public FragmentTwo() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view=inflater.inflate(R.layout.contact_lay,container, false); System.out.println("Kaks7"); dateimg = (ImageView) getActivity().findViewById(R.id.img); blog= (Button) getActivity().findViewById(R.id.btnGplus); fb = (Button) getActivity().findViewById(R.id.btnFb); twitter = (Button)getActivity().findViewById(R.id.btnTwitter); mail = (Button)getActivity().findViewById(R.id.btnMail); System.out.println("K17"); new […]

键盘重叠EditText点击

在我的片段中,我在scrollview中有一个editText,当我点击它的时候,我把它设置为这样打开: getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 它从第一次打开时就可以正常工作,但是当我closures键盘并再次打开它时,它将与editText重叠,我如何将editText设置为始终以SOFT_INPUT_ADJUST_PAN模式打开? XML: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:custom="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/alabaster"> <TextView android:id="@+id/semconexao" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Verifique sua conexão com a internet" android:gravity="center" android:layout_marginTop="10dp" android:visibility="gone"/> <ScrollView android:id="@+id/scroll" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_above="@+id/footer"> <LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="visible"> <com.android.volley.toolbox.NetworkImageView android:id="@+id/imageInst" android:layout_width="match_parent" android:layout_height="200dp" android:scaleType="centerCrop" android:visibility="visible" /> <com.retornar.utils.CircledNetworkImageView android:id="@+id/thumbnail" android:layout_width="@dimen/logo_maior" android:layout_height="@dimen/logo_maior" android:layout_marginLeft="20dp" android:layout_marginTop="100dp" android:adjustViewBounds="true" […]

Android AlertDialogexception“资源$ NotFoundException”

试图在Android中显示对话框时出现exception。 我的AlertDialog是从FragmentActivity调用下面的代码: public static void displayShare(){ // show share options CharSequence selections[] = new CharSequence[] {"Email", "SMS", "Tweet", "Phone Call", "Cancel"}; final AlertDialog.Builder builder = new AlertDialog.Builder(CommonVariables.mContext); builder.setTitle("Share your location via…"); builder.setItems(selections, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { switch(which){ case 0: // Email callEmailMethod(); break; case 1: // SMS callSMSMethod(); […]

Android ScrollView只能托pipe一个直接的孩子

我有一个onclick监听器,应该清除tableview中的所有行,然后将行/行添加到scrollview中的tableview。 片段应该在每次点击button时改变。 不过,我得到:java.lang.IllegalStateException:ScrollView可以只托pipe一个直接的孩子。 myactivitybutton监听器 TrackerFragment tf = (TrackerFragment) getFragmentManager().findFragmentById(R.id.tracker1); tf = TrackerFragment.newInstance(listOfList.get(id).get(position)); fragmentTransaction.add(R.id.tracker1, tf); fragmentTransaction.commit(); t1 = true; //being used getFragmentManager().executePendingTransactions(); 跟踪器片段 public class TrackerFragment extends Fragment { private Dish dish; public static TrackerFragment newInstance(Serializable dish) { TrackerFragment tf = new TrackerFragment(); Bundle args = new Bundle(); args.putSerializable("dish", dish); tf.setArguments(args); return tf; } public static […]

片段的onActivityCreated()在Activity的onDestroy()之后被调用

今天我在应用程序中注意到一个奇怪的行为。 当我停止使用Eclipse中的设备视图的应用程序时发生。 有人可以解释吗? 为什么即使在Activity已经被销毁的时候, Fragment onActivityCreated()也会被调用? MyHomeActivity包含两个Fragment并为两者生成类似的日志。 我在这里粘贴一个Fragment日志。 NullPointerException是次要问题。 我很惊讶为什么onActivityCreated()调用时,从MyHomeActivity onDestroy()启动调用堆栈? 03-05 12:31:21.414: W/System.err(5638): java.lang.NullPointerException 03-05 12:31:21.421: W/System.err(5638): at **MyListViewFrag.onActivityCreated**(BuddyListViewFrag.java:85) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1468) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:931) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.FragmentManagerImpl.dispatchReallyStop(FragmentManager.java:1888) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.FragmentActivity.onReallyStop(FragmentActivity.java:787) 03-05 12:31:21.421: W/System.err(5638): at android.support.v4.app.FragmentActivity.doReallyStop(FragmentActivity.java:764) […]

如何在活动片段上运行testing

我刚刚开始了,我碰到的第一个问题是,我应该如何testing片段? 被testing的活动有1个片段,这是主要的布局。 @Override protected void setUp() throws Exception { super.setUp(); Intent intent = new Intent(getInstrumentation().getTargetContext(), ActivityWelcome.class); startActivity(intent, null, null); FragmentManager fragmentManager = getActivity().getSupportFragmentManager(); mFragmentWelcome = (FragmentWelcome) fragmentManager.findFragmentByTag(FragmentWelcome.TAG); if (mFragmentWelcome == null) { mFragmentWelcome= FragmentWelcome.newInstance(); fragmentManager .beginTransaction() .replace(android.R.id.content, mFragmentWelcome, FragmentWelcome.TAG) .commit(); } } 然后我继续testing版面: @SmallTest public void testLayout() { ImageButton buttonImage = (ImageButton) getActivity().findViewById(my.package.R.id.button_invites); assertNotNull(buttonImage); assertEquals("ImageButton […]

addToBackStack(null)中的null的目的是什么?

我是Andoid开发的新手,并且已经创build了一个片段,用于预编程地replace片段。 我遵循了Android开发人员指南 。 我已经创build了一个名为selectFrag的方法,并在点击button时触发它: public void selectFrag(View view) { Fragment fr; if(view == findViewById(R.id.showsecond)) { fr = new secondfragment(); } else { fr = new firstfragment(); } FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.replace(R.id.fragment_place,fr); ft.addToBackStack(null); ft.commit(); } 代码工作完美,我明白除了addToBackStack(null)以外的所有内容。 我试验过并且明白这个方法是把这个片段加到后退button的堆栈中,这样如果我们点击返回button,就不会离开屏幕并显示以前的工作。 但是,我不明白这里显示的是什么null 。 我在网上search,但我只知道这是一个TAG ,我们可以使用这样的东西 。 所以,我的问题很简单: 这里null是什么意思? 或者null做什么? (对不起,我的英语不好。)

<fragment>中的android:name属性

有没有可能在这个代码中为我解释: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:name="com.example.news.ArticleListFragment" android:id="@+id/list" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" /> <fragment android:name="com.example.news.ArticleReaderFragment" android:id="@+id/viewer" android:layout_weight="2" android:layout_width="0dp" android:layout_height="match_parent" /> </LinearLayout> 什么是ArticleListFragment和ArticleReaderFragmet ? 我不知道他们指的是什么? 分片类(或其子类)在源代码或XML文件中使用布局? 如果他们是必须位于XML文件?