Articles of android fragments

Android片段显示为dialogfragment或通常的片段

我想要实现的是在平板电脑上显示一个片段,它显示为DialogFragment ,而在智能手机上,它将显示为常规片段。 我知道已有类似的post ,但我无法做到这一点 – 将样式应用于片段。 要自上而下显示,MainActivity.java: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.action_next) { decideToNext(); return true; } return super.onOptionsItemSelected(item); } private void decideToNext() { […]

将FragmentTransaction与DialogFragment一起使用

所以我创建了一个DialogFragment,它通过这种技术显示为对话框 现在它已经启动并且在此popup窗口中进行用户交互时,我想将另一个片段滑入此对话框。 我试图通过FragmentTransaction.add()来做到这一点,我给它在这个布局中的一个容器的id。 在这一点上,我得到: java.lang.IllegalArgumentException: No view found for id 0x7f09013f for fragment 作为一个快速测试,我试图将它推送到一个不在对话框中但在主要支持活动中的容器ID,并且工作得很好。 DialogFragments及其容器ID是否有一些不允许FragmentTransactions的东西? 作为权宜之计,我告诉我的事务隐藏当前的DialogFragment并显示这个新的片段,但是animation/显示有点刺耳,所以我真的想把这个问题排除在外。 谢谢

DrawerLayout – exception调度输入事件

我最近在一个星期前开始在一个新项目中使用DrawerLayout,它一切正常。 除了奇怪的时候用手指轻扫它,它会崩溃。 如果我使用ActionBar Up / Home MenuItem,它每次都会正常工作。 在LogCat中我得到两个堆栈跟踪,它们似乎都指向内部的android位置,所以我不知道如何解决这个问题。 我刚刚尝试创建一个新的应用程序,以查看它是否是我之前正在做的事情,但它也发生在新的应用程序中。 我在“新建Android应用程序”窗口中使用主/详细信息流模板创建了新应用程序,将所有内容保留为默认值,然后更改了activity_item_list.xml以将其包含在内: DrawerLayout显示,我仍然可以从屏幕边缘拖动它,但它仍然在此测试应用程序中崩溃。 这是我用手指拖动后看到的堆栈跟踪: 07-26 09:29:45.574: E/InputEventReceiver(19085): Exception dispatching input event. 07-26 09:29:45.574: E/MessageQueue-JNI(19085): Exception in MessageQueue callback: handleReceiveCallback 07-26 09:29:45.584: E/MessageQueue-JNI(19085): java.lang.NullPointerException 07-26 09:29:45.584: E/MessageQueue-JNI(19085): at android.support.v4.widget.DrawerLayout.isContentView(DrawerLayout.java:840) 07-26 09:29:45.584: E/MessageQueue-JNI(19085): at android.support.v4.widget.DrawerLayout.onInterceptTouchEvent(DrawerLayout.java:866) 07-26 09:29:45.584: E/MessageQueue-JNI(19085): at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:1852) 07-26 09:29:45.584: E/MessageQueue-JNI(19085): at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2209) 07-26 09:29:45.584: E/MessageQueue-JNI(19085): at […]

Google+登录无法在Android片段上正常使用

我正在使用谷歌+登录到我的应用程序,当我使用活动完成它的工作魅力,然后我将我的代码移动到一个片段,然后当我尝试登录谷歌+它不工作时,我必须打开片段活动2次登录谷歌+任何人都可以告诉我在下面添加了片段的代码会发生什么 public class GooglePluseFragment extends Fragment implements ConnectionCallbacks, OnConnectionFailedListener { private static final int RC_SIGN_IN = 0; private static final String TAG = “MainActivity”; private static final int PROFILE_PIC_SIZE = 800; private GoogleApiClient mGoogleApiClient; private boolean mIntentInProgress; private boolean mSignInClicked; private ConnectionResult mConnectionResult; private SignInButton btnSignIn; private Button btnSignOut; private Context mContext; private Activity mActivity; […]

片段:删除视图中的所有片段

我面临的情况是,在我的应用程序中,我有一个单一窗格和双窗格样式布局。 对于每种不同的布局样式,我使用的function可以在给定所需的屏幕时正确设置布局,而不是单独处理屏幕之间可能的每一个导航操作。 它基本上是应用程序中每个屏幕的switch语句,每个屏幕都有一个嵌套的switch语句来处理每种布局样式。 这就是我在代码中所说的: protected void setupScreen() { switch(currentScreen) { case SCREEN_ONE: switch(currentLayout) { case SINGLE_PANE: // Perform actions to setup the screen break; case DUAL_PANE: // Perform actions to setup the screen break; } break; case SCREEN_TWO: switch(currentLayout) { case SINGLE_PANE: // Perform actions to setup the screen break; case DUAL_PANE: // Perform actions […]

使用“activatedBackgroundIndicator”导航抽屉选择项目的自定义背景颜色

这个问题在SO上已经被问了很多,我已经引用了所有的答案。 我的导航抽屉上的所选项目仍然保留默认的Holo蓝色背景。 我是Java的新手,我对.setAdapter()的“context”部分感到困惑。 我的项目是一个Activity,使用导航抽屉交换了多个片段。 这是我的适配器: mDrawerListView.setAdapter(new ArrayAdapter( // First parameter – Context getActionBar().getThemedContext(), // Second parameter – Layout for the row R.layout.fragment_navigation_drawer_list_item, // Third parameter – ID of the TextView to which the data is written android.R.id.text1, // Forth – the Array of data new String[]{ getString(R.string.title_section1), getString(R.string.title_section2), getString(R.string.title_section3), getString(R.string.title_section4), })); mDrawerListView.setItemChecked(mCurrentSelectedPosition, true); 这里的上下文来自Android Studio中的“预先烹饪”导航抽屉。 […]

使用Admob广告的DrawerLayout

我在我的应用程序中使用了Navigation-Drawer。所以我用navigation_drawer layout创建了单个活动。当用户从导航抽屉菜单中选择菜单选项时,我正在使用片段来更改主要内容区域(@ + id / content_frame)数据。现在我的问题是我想在每个屏幕上显示admob广告。我可以使用片段来初始化广告布局并将其扩展到FrameLayout但我认为这不是一个好选项。他们是否可以使用该单一活动来初始化广告? navigation_drawer.xml

‘TAG’在’android.support.v4.app.FragmentActivity’中拥有私人访问权限

几乎我活动中的所有内容都工作正常,除了引用TAG的地方。 TAG得到一条红线并说: ‘TAG’ has private access in ‘android.support.v4.app.FragmentActivity’ 。 MainActivity(无import) – public class MainActivity extends AppCompatActivity { public static final String DATA_PATH = Environment .getExternalStorageDirectory().toString() + “/MainActivity”; public static final String lang = “eng”; protected Button _button; protected ImageView _image; protected TextView _field; protected String _path; protected boolean _taken; @Override public void onCreate(Bundle savedInstanceState) { […]

片段似乎有点矫枉过正? 没有MVC架构可能吗?

我几天前开始使用碎片,但它似乎对我有用。 我没有看到复杂性大幅增加的合理优势。 我不知道,如果我应该在我的Activity或我的片段中实现function。 首先,我试图把它放在碎片中,但这似乎是不可能的。 例如:按钮点击后,我有一个用户输入对话框。 所以我通过侦听器从片段到活动转移了按钮单击,并在活动中打开了对话框。 在对话框中,我启动了新function(因此在Activity中实现)。 Android dev提供了在片段中添加警报对话框的提示: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/FragmentAlertDialog.html 但是这个片段仍然实现并且与激活密切相关(对话框的按钮动作在活动中)。 所以模型和视图混杂起来。 在这样一个难以维护的静态代码中,我没有看到额外的价值?! 您对片段的意见和建议是什么?

在单个活动中切换片段

我想创建一个Activity ,它显示一个用户可以浏览的菜单。 通过单击项目,将显示一个新屏幕,允许用户提供更多选项(类似向导)。 我想用Fragment来实现它,但它对我不起作用。 现在我有: main.xml : 带有OnClickListener MainMenuFragment : @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.mainmenu, container, false); setupButton(view); return view; } /* Button setup code omitted */ @Override public void onClick(View v) { SherlockFragment secondRunMenuFragment = (SherlockFragment) getSherlockActivity().getSupportFragmentManager().findFragmentById(R.id.secondmenufragment); FragmentTransaction transaction = getSherlockActivity().getSupportFragmentManager().beginTransaction(); transaction.replace(android.R.id.content, secondMenuFragment); //also crashes […]