Tag: 片段

检测后退button,但不要closuresdialogfragment

我有一个浮动对话框的对话框,其中包含一个特殊的键盘,当用户按下EditText字段(正常IME停止显示)时popup。 当用户按下后退button(就像正常的IME服务一样),但是对话框保持可见状态时,我希望键盘被解除(可见性= GONE)。 然而,就我在SO和其他地方相当广泛的阅读中所看到的,似乎没有办法做到这一点。 如果我将对话框设置为不可取消,那么我不会通过onCancel()或onDismiss()得到通知,因为对话框是不可取消的。 如果我将对话框设置为可取消,则会收到通知,但对话框将被解除。 我无法将onKeyListener附加到片段中的对话框,因为它被系统replace,因此片段可以处理对话框的生命周期。 有没有办法做到这一点? 或者为了碎片系统的目的,可以访问关键事件的检测function?

unit testing一个Android片段

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

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 […]

ListView是否可以包含碎片

在中,ListView的ELEMENTS可以是Fragments。 我知道你可以将一个TextView XML分配给一个ListView来改变它的外观,但是你可以将Fragments添加到一个ListView中。 例如:我有一个片段。 所述片段的XML包含一个ImageView,几个大样式的TextView和一个小型的TextView。 Fragment类代码接收一个Bundle,然后根据内容填充TextViews和ImageView。 片段XML和片段代码工作没有问题(我可以显示一个单独的片段就好了)。 我有一个FragmentActivity,我想要显示上述碎片列表。 这里是我用来试图填充FragmentActivity的视图里面的ListView的代码: ArrayList<Fragment> fragList = new ArrayList<Fragment>(); Fragment fragment = Fragment.instantiate(this, TileItem.class.getName()); Bundle bundle = new Bundle(); bundle.putInt("key", 0); fragment.setArguments(bundle); fragList.add(fragment); ArrayAdapter<Fragment> adapter = new ArrayAdapter<Fragment>(this, R.layout.tile_item, fragList); listItems.setAdapter(adapter); 这是我的思维模式。 我做了一个碎片ArrayList来保存我所有的实例化视图。 然后我创build一个Fragment,创build一个Bundle,向Bundle添加数据(这样Fragment可以正确地将数据封装到Views中),将Bundle添加到Fragment中,最后将这个Fragment添加到ArrayList中。 之后,我制作了一个ArrayAdapter,添加了我想要使用的元素布局以及我制作的碎片列表。 然后设置ListView从我的适配器读取。 任何运行这个代码的人都可能得到NPE @实例化ArrayAdapter。 是什么赋予了? 这甚至有可能吗? 在我不停地喋喋不休之前,有人可以告诉我是不是在浪费我的时间? 有没有更好的办法? 我一直在考虑使用ScrollView,但是ListView的很多function都需要重新实现,而当我不需要的时候,我讨厌 – 讨厌 – 讨厌重新发明轮子。 感谢任何人的阅读,特别是感谢你的想法,如果你决定离开他们。 我试着寻找一个既定的答案,但我似乎find的所有问题/网页有关使用一个片段的Lis​​tView INSIDE; […]

在Android中添加碎片内的Tab?

我正在尝试在片段内添加一个TabHost。 代码如下。 在这里面的片段。 我想添加TabHost来显示两个标签: package com.nordicsoft.dilosysNewVersion; import android.app.Fragment; import android.content.Intent; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TabHost; public class Fragment_Coupons extends Fragment { TabHost tabHost; TabHost.TabSpec spec; public Fragment_Coupons() { } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_coupon, container, false); tabHost = (TabHost) rootView.findViewById(android.R.id.tabhost); tabHost.setup(); […]

Android的片段不尊重match_parent作为高度

对不起,这个庞大的代码转储,但我真的迷路了。 MyActivity.java onCreate: super.onCreate(savedInstanceState); setContentView(R.layout.activity_singlepane_empty); mFragment = new PlacesFragment(); getSupportFragmentManager().beginTransaction() .add(R.id.root_container, mFragment) .commit(); PlacesFragment.java onCreateView: mRootView = (ViewGroup) inflater.inflate(R.layout.list_content, null); return mRootView; 注 :mRootView是一个ViewGroup的全局,我相信没有问题。 PlacesFragment是一个ListFragment。 布局: activity_singlepane_empty.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/root_container" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#00f"> <include layout="@layout/actionbar"/> <!– FRAGMENTS COME HERE! See match_parent above –> </LinearLayout> list_content.xml: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/listContainer" android:background="#990" > <ListView android:id="@android:id/list" […]

已经使用id 0pipe理GoogleApiClient在FRAGMENT中

一切正常,如果你第二次去这个片段接收错误。 我试图把null,如果查看,但不能改变任何东西。 码: public class Login extends Fragment implements GoogleApiClient.OnConnectionFailedListener, View.OnClickListener { private static final String TAG = "SignInActivity"; private static final int RC_SIGN_IN = 9001; private GoogleApiClient mGoogleApiClient; private TextView mStatusTextView; private ProgressDialog mProgressDialog; private static String url; private static View view; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { if (view […]

将对象传递给碎片

最近我一直在处理大量Fragments ,并且一直使用两种不同的方法将对象传递给碎片,但是我可以看到的唯一区别是,在下面的FragmentOne所采用的方法中,您传入的对象必须实现Serializable接口( 以及与之相关的所有东西 )。 使用另一个有什么好处? public class FragmentOne extends Fragment { public static final String FRAGMENT_BUNDLE_KEY = "com.example.FragmentOne.FRAGMENT_BUNDLE_KEY"; public static FragmentOne newInstance(SomeObject someObject) { FragmentOne f = new FragmentOne(); Bundle args = new Bundle(); args.putSerializable(FRAGMENT_BUNDLE_KEY, someObject); f.setArguments(args); return f; } public SomeObject getSomeObject() { return (SomeObject) getArguments().getSerializable(FRAGMENT_BUNDLE_KEY); } } 和 public class FragmentTwo extends Fragment […]

片段不接收菜单callback

我有一个片段类,它扩展了Fragment并调用setHasOptionsMenu参与菜单。 这个类还实现了onCreateOptionsMenu , onPrepareOptionsMenu和onOptionsItemSelected 。 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setHasOptionsMenu(true); …. } 我dynamic加载这个片段使用FragmentTransaction在我的活动(扩展FragmentActivity )。 然而没有菜单callback( onCreateOptionsMenu , onPrepareOptionsMenu和onOptionsItemSelected )被调用(我debugging了这些方法中的一些断点),菜单不显示。 我错过了什么吗? 我需要在我的活动中添加一些内容吗? 我正在使用Android兼容性库,使用L11 SDK编译并在Xoom中进行testing。 编辑 :我发现了这个问题。 我的AndroidManifest是针对L11,这似乎隐藏菜单button,并阻止被调用的callback。 但是,如果我从清单中删除了这个,我就会丢失一些我需要的其他function(例如列表中的激活状态)。 有谁知道如何解决这个问题(启用菜单button),而无需从清单中删除targetSdkVersion=11 ?

Android:如何防止后退button取消FragmentDialog

我有一个可以创build和popup一个DialogFragment的片段,但是当我点击后退button时,即使我明确地调用setCancelable(false),它也会closures对话框。 有没有办法让我的DialogFragment对后退button不敏感? public class LoadingDialogFragment extends DialogFragment { String title; String msg; public LoadingDialogFragment() { this.title = "Loading…"; this.msg = "Please wait…"; } public LoadingDialogFragment(String title, String msg) { this.title = title; this.msg = msg; } @Override public Dialog onCreateDialog(final Bundle savedInstanceState) { final ProgressDialog dialog = new ProgressDialog(getActivity()); dialog.setTitle(title); dialog.setMessage(msg); dialog.setIndeterminate(true); dialog.setCanceledOnTouchOutside(false); dialog.setCancelable(false); return […]