Tag: android fragments

在按下后退button上的片段活动是空白的

我有一个活动和许多片段膨胀在同一个FrameLayout <FrameLayout android:id="@+id/content_frame" android:layout_width="match_parent" android:layout_height="match_parent" /> 例如:mainActivity>任何片段(按回button)>活动是空白的。 在onCreate: layout = (FrameLayout)findViewById(R.id.content_frame); layout.setVisibility(View.GONE); 当我开始一个片段: FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.content_frame, profileFragment); ft.addToBackStack(null); ft.commit(); layout.setVisibility(View.VISIBLE); 我想我需要使frameLayout的可见性GONE再次按下,但我该怎么做? 我尝试onBackPressed并设置layout.setVisibility(View.GONE); 但我不能通过片段回去,因为我直接进入主页面。

unit testing一个Android片段

我想unit testing一个Android片段类。 我可以使用AndroidTestCase设置testing,还是需要使用ApplicationTestCase? 有没有任何有用的例子来说明如何使用这两个TestCases? 开发人员网站上的testing示例很less,似乎只关注testing活动。 我在别处find的所有例子都是AndroidTestCase类被扩展的,但是所有的testing都是将两个数字相加,或者如果使用Context,它只是简单地获取并testing一些不是null的东西! 据我所知,片段必须在活动中生存。 所以,我可以创build一个模拟的活动,或获得应用程序或上下文提供一个活动,我可以在其中testing我的片段? 我是否需要创build自己的Activity,然后使用ActivityUnitTestCase? 感谢你的协助。 崔佛

IllegalStateException:<MyFragment>当前不在FragmentManager中

我知道这听起来像是FragmentStatePagerAdapter IllegalStateException的重复:<MyFragment>目前不在FragmentManager中,但他的解决scheme与我的情况无关。 我很less遇到以下崩溃: java.lang.RuntimeException:无法暂停活动{MyActivity}: … 由于:java.lang.IllegalStateException:Fragment MyFragment {40648258 id = 0x7f070051}目前不在android.support.v4.app.FragmentManagerImpl.putFragment(MT:516)的FragmentManager中android.support.v4.app.FragmentStatePagerAdapter .saveState(MT:185)在android.support.v4.view.ViewPager.onSaveInstanceState(MT:881) … 在android.app.Activity.onSaveInstanceState(Activity.java:1138)com.android.internal.policy.impl.PhoneWindow.saveHierarchyState(PhoneWindow.java:1522)android.view.View.saveHierarchyState(View.java:6238) )在MyActivity.onSaveInstanceState(MT:336)处的android.support.v4.app.FragmentActivity.onSaveInstanceState(MT:480) 这似乎是我从FragmentStatePagerAdapter无法理解的奇怪的代码: for (int i=0; i<mFragments.size(); i++) { Fragment f = mFragments.get(i); if (f != null) { if (state == null) { state = new Bundle(); } String key = "f" + i; mFragmentManager.putFragment(state, key, f); } } 它看起来像适配器从mFragments获取我的Fragment ,但不能将其状态添加到FragmentManager 。 […]

多次调用OnCreateView /使用ActionBar和Fragments

我将我的应用程序的一部分从活动切换到碎片,以便我可以使用整洁的ActionBar选项卡。 但是,在完成转换之后,我遇到了一个问题:每当切换到另一个选项卡时,都会重新创buildFragment。 onCreate和onCreateView每次到达一个选项卡都会被调用。 我有4个选项卡,每个选项卡打开其中一个片段: Fragment ShopFragment = new WebActivity(); Fragment SearchFragment = new SearchActivity(context); Fragment StoreFragment = new StoreLocatorActivity(context, this); Fragment BlogsFragment = new BlogsActivity(context, this); 这是我的听众代码: class MyTabsListener implements ActionBar.TabListener { public Fragment fragment; public MyTabsListener(Fragment fragment) { this.fragment = fragment; } @Override public void onTabReselected(Tab tab, FragmentTransaction ft) { ft.hide(fragment); } @Override public […]

android.content.Context.getPackageName()'的空对象引用

嗨,我正在与实现接口的碎片工作。 public class SigninFragment extends Fragment implements SigninInterface 片段类中接口的方法实现如下。 @Override public void afterSubmitClicked(String userId, Bundle bundle) { Log.d(TAG,"Calling time afterSubmitClicked called"+bundle); if(!userId.equals("-1")){ //Logged in successfully //Move to MusicHome Intent mIntent = new Intent(getActivity(),MusicHome.class); mIntent.putExtra("SigninFragment.user_details", bundle); startActivity(mIntent); }else{ //Logging in failed //show error dialog } } 这个方法在执行一个AsynchronousTask(它扩展了AsyncTask)类之后被调用。 但是我正在崩溃。 并显示错误消息 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String […]

致命exception:main java.lang.NoClassDefFoundError:android.support.v7.internal.widget.TintManager

我在运行我的项目时遇到错误。 我只是按照这个教程 ,并在我的项目中使用它。 我的代码在教程中完全一样 public class MainEventActivity extends AppCompatActivity { private Toolbar toolbar; private TabLayout tabLayout; private ViewPager viewPager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_event_activity); toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); viewPager = (ViewPager) findViewById(R.id.viewpager); setupViewPager(viewPager); tabLayout = (TabLayout) findViewById(R.id.tabs); tabLayout.setupWithViewPager(viewPager); } private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); adapter.addFragment(new […]

获取片段dynamic附加到<FrameLayout>?

那么,我有一个简单的<FrameLayout> : <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/FragmentContainer" android:layout_width="fill_parent" android:layout_height="fill_parent" /> 然后在我的代码中,我添加了一个片段: FragClass aFrag = new FragClass(); getSupportFragmentManager().beginTransaction() .replace(R.id.FragmentContainer, aFrag).commit(); 而在我的代码中的其他地方,我想从ID R.id.FragmentContainer获得FragClass (extends Fragment)对象。 我努力了 ((ViewGroup) findViewById(R.id.FragmentContainer)).getChildAt(0) 要么 ((FrameLayout) findViewById(R.id.FragmentContainer)).getChildAt(0) 但他们正在返回View ,而不是附加到它的Fragment 。 我知道我可以把variablesaFrag放在某个地方,所以我不需要再find它。 但是我相信应该有一种方法来解决这个问题。

RecyclerView不调用onCreateViewHolder或onBindView

没有得到任何错误,所有的数据似乎有效。 出于某种原因,视图相关的方法被称为。 我已经确定了以下内容: getItemCount()是唯一被调用的适配器方法,并返回一个正整数值(我知道这将是你们将要看的区域) 正在调用构造函数,成员variables是有效的。 父视图是一个垂直的LinearLayout; 没有滚动视图,或任何其他视图与他们自己的滚动属性在眼前。 包含片段视图被创build并显示在屏幕上。 这里是片段后面跟着适配器的声明。 任何帮助将不胜感激,因为这已经完全困惑。 SubMenuAdapter adapter = new SubMenuAdapter(getActivity(), mContentItems); recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); recyclerView.setItemAnimator(new DefaultItemAnimator()); recyclerView.setAdapter(adapter); public class SubMenuAdapter extends RecyclerView.Adapter<SubMenuAdapter.ViewHolder> { private static final String TAG = String.format("==> %S", SubMenuAdapter.class.getSimpleName()); private final List<ContentItem> mContentItems; private Context mContext; public SubMenuAdapter(Context context, List<ContentItem> contenItems) { Log.d(TAG, "Constructor called"); mContentItems = contenItems; […]

长按一下ListFragment

我正在处理一个ListFragment并做一个onListItemClick。 一切工作正常,但现在我想要使用一个长的项目点击(例如setOnItemLongClickListener(新的OnItemLongClickListener()为一个活动)。我怎样才能在我的片段使用这个? 谢谢!

Android:片段backStack

我试图加载一个新的片段,当一个方法被调用。 这个方法创build一个新的片段并“replace”另一个片段: private void showTestFragment(Fragment oldFragment, boolean addBackStack, BaseAdapter adapter, int position) { Cursor cursor = (Cursor)adapter.getItem(position); if(cursor != null){ int idx = cursor.getColumnIndexOrThrow(Episode._ID); long rowId = cursor.getLong(idx); FragmentManager fragmentManager = getFragmentManager(); FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); if(oldFragment != null){ Log.i(TAG, "Removing the old fragment"); fragmentTransaction.remove(oldFragment); } TestFragment testFragment = new TestFragment(); testFragment.setId(rowId); fragmentTransaction.add(android.R.id.content, testFragment); if(addBackStack){ […]