我已经通过在一个活动中使用应用程序上下文将一些数据存储到全局类.后来我必须在A Fragment中检索这些值.我已经做了类似的事情来存储在Global Class中.
AndroidGlobalClass AGC = ((AndroidGlobalClass) getApplicationContext());
AGC.setUser_access("XYZ");
AGC.setFirst_name("ABC");
Run Code Online (Sandbox Code Playgroud)
我在Manifest中做过:
<application
android:name=".AndroidGlobalClass"
android:theme="@style/AppTheme" >
<activity
android:name="abc.SignInActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
现在,当我试图获取应用程序上下文时使用此...我没有得到上下文...
AndroidGlobalClass AGC = ((AndroidGlobalClass) getApplicationContext());
Run Code Online (Sandbox Code Playgroud)
这是My Fragment Activity
public class Fragment_NewsFeed extends Fragment {
public Fragment_NewsFeed() {
}
RestImplimentationMethods RIM;
AndroidGlobalClass AGC;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_newsfeed, container, false);
return rootView;
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个可以创建并弹出DialogFragment的Fragment,但是当我点击后退按钮时,即使我显式调用setCancelable(false),它也会取消对话框; 我的DialogFragment有没有办法对后退按钮不敏感?
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 dialog;
}
}
Run Code Online (Sandbox Code Playgroud)
我从AsyncTask创建DialogFragment:
private class GpsTask extends AsyncTask<String, Integer, Integer>
{
//ProgressDialog dialog;
@Override
protected void onPreExecute()
{
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
DialogFragment newFragment …Run Code Online (Sandbox Code Playgroud) android back-button fragment progressdialog android-asynctask
我有一个活动,其中我经历了几个片段.在每个片段中,我都有几个视图(EditText, ListView, Map等).
如何保存当时显示的片段实例?我需要它在活动时工作onPause() --> onResume().当我从另一个片段(从backstack弹出)返回时,我需要它才能工作.
从主要的Activity我调用第一个片段,然后从片段我调用下一个片段.
我的活动代码:
public class Activity_Main extends FragmentActivity{
public static Fragment_1 fragment_1;
public static Fragment_2 fragment_2;
public static Fragment_3 fragment_3;
public static FragmentManager fragmentManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
fragment_1 = new Fragment_1();
fragment_2 = new Fragment_2();
fragment_3 = new Fragment_3();
fragmentManager = getSupportFragmentManager();
FragmentTransaction transaction_1 = fragmentManager.beginTransaction();
transaction_1.replace(R.id.content_frame, fragment_1);
transaction_1.commit();
}}
Run Code Online (Sandbox Code Playgroud)
然后这是我的一个片段的代码:
public class Fragment_1 extends Fragment {
private EditText title;
private Button go_next;
@Override …Run Code Online (Sandbox Code Playgroud) 对不起,巨大的代码转储,但我真的迷路了.
MyActivity.java onCreate:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_singlepane_empty);
mFragment = new PlacesFragment();
getSupportFragmentManager().beginTransaction()
.add(R.id.root_container, mFragment)
.commit();
Run Code Online (Sandbox Code Playgroud)
PlacesFragment.java onCreateView:
mRootView = (ViewGroup) inflater.inflate(R.layout.list_content, null);
return mRootView;
Run Code Online (Sandbox Code Playgroud)
注意: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>
Run Code Online (Sandbox Code Playgroud)
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="false" />
<TextView android:id="@id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/no_data_suggest_connection"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
问题:正如您所看到的,预期的行为是将上面的空TextView显示在屏幕中心.在Eclipse的设计预览中,没关系.只有当作为片段添加到root_view时,FrameLayout才会填满整个屏幕.
root_container为蓝色,FrameLayout为黄色,请参阅下面的调试目的.黄色窗格不应该填满整个屏幕吗?!?!?!?

android center fragment android-linearlayout android-framelayout
我发现消息无法解析方法'getSupportFragmentManager()'我想要片段化为活动.因为我想在选项卡上使用地图滑动.
public class PETAcikarangsukatani extends Fragment {
Context context;
private static final LatLng SUKATANI = new LatLng(-6.171327, 107.178108);
private static final LatLng WRPOJOK = new LatLng(-6.222411, 107.162158);
private static final LatLng PILAR = new LatLng(-6.257033, 107.156472);
private static final LatLng CIKARANG = new LatLng(-6.256073, 107.143984);
GoogleMap googleMap;
final String TAG = "PathGoogleMapActivity";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_path_google_map, container, false);
context = rootView.getContext();
SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager()
.findFragmentById(R.id.map);
googleMap = fm.getMap();
Run Code Online (Sandbox Code Playgroud) 我想将工具栏设置为操作栏,但由于工具栏是一个布局,因此必须在您的布局中.现在我的布局在我的片段中.
我在我的布局中添加了工具栏,我在我的片段中调用它:
//Toolbar
Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar);
Run Code Online (Sandbox Code Playgroud)
它的作用是因为我可以设置标题等等,但现在我希望它作为动作栏做出反应,因为我想要实际拥有它.setDisplayHomeAsUpEnabled(真)
为此,我必须将工具栏更改为操作栏:
setSupportActionBar(toolbar);
Run Code Online (Sandbox Code Playgroud)
这在我的片段中不起作用......
任何人都可以帮助我让我的工具栏作为片段中的操作栏工作.
我有一个片段类扩展Fragment并调用setHasOptionsMenu参与菜单.这个类也实现了onCreateOptionsMenu,onPrepareOptionsMenu和onOptionsItemSelected.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
....
}
Run Code Online (Sandbox Code Playgroud)
我正在使用FragmentTransaction我的Activity(扩展FragmentActivity)动态加载这个片段.
但是没有调用任何菜单回调(onCreateOptionsMenu,onPrepareOptionsMenu和onOptionsItemSelected)(我在这些方法中调试了一些断点)并且未显示菜单.
我错过了什么吗?我需要在我的活动中添加一些内容吗?
我正在使用Android兼容性库,使用L11 SDK进行编译并在Xoom中进行测试.
编辑:我发现了问题.我的AndroidManifest目标是L11,这似乎隐藏了菜单按钮并阻止调用回调.但是,如果我从清单中删除它,我会丢失一些我需要的其他功能(例如列表中的激活状态).有没有人知道如何解决这个问题(启用菜单按钮)而不targetSdkVersion=11从清单中删除?
我已经搜索过片段的寻呼机,我在ICS API上开发.
我知道ViewPager和早期版本的所有支持库,但我不明白为什么我应该使用支持库考虑我使用最新版本的api并且不打算支持早期版本的事实.
我是否必须自己编写"ViewPager"或者是否有我在api中看不到的内容.
我最近一直在使用很多Fragments并且一直在使用两种不同的方法将对象传递给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);
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class FragmentTwo extends Fragment {
SomeObject mSomeObject;
public static FragmentTwo newInstance(SomeObject someObject) {
FragmentTwo fragment = new FragmentTwo();
fragment.setSomeObject(someObject);
return fragment;
}
public void setSomeObject(SomeObject someObject) …Run Code Online (Sandbox Code Playgroud) 我想对Android Fragment类进行单元测试.
我可以使用AndroidTestCase设置测试,还是需要使用ApplicationTestCase?
有没有关于如何使用这两个TestCases的有用示例?开发人员站点上的测试示例很少,似乎只关注测试活动.
我在其他地方找到的只是扩展AndroidTestCase类的例子,但是所有经过测试的都是将两个数字加在一起,或者如果使用了Context,它只是做一个简单的get并测试某些东西不是null!
据我所知,片段必须存在于一个活动中.那么我可以创建一个模拟Activity,或者获取Application或Context来提供一个Activity,我可以在其中测试我的片段吗?
我是否需要创建自己的Activity然后使用ActivityUnitTestCase?
谢谢你的协助.
崔佛
android unit-testing fragment android-fragments activityunittestcase
android ×10
fragment ×10
android-4.0-ice-cream-sandwich ×1
back-button ×1
back-stack ×1
center ×1
google-maps ×1
java ×1
onresume ×1
toolbar ×1
unit-testing ×1