标签: android-3.0-honeycomb

为什么片段,何时使用片段而不是活动?

在Android API 11+中,Google发布了一个名为的新类Fragment.

在视频中,谷歌建议尽可能(link1,link2),我们应该使用片段而不是活动,但他们没有解释确切原因.

片段的目的是什么?它们的一些可能的用途(除了一些可以通过简单的视图/布局轻松实现的UI示例)?

我的问题是片段:

  1. 使用片段的目的是什么?
  2. 与使用活动/视图/布局相比,使用片段有哪些优缺点?

奖金问题:

  1. 你能为片段提供一些非常有趣的用途吗?谷歌在他们的视频中没有提到的事情?
  2. 片段与包含片段的活动之间进行通信的最佳方式是什么?
  3. 使用片段时要记住哪些最重要的事情?您的经验提示和警告?

android android-layout android-fragments android-3.0-honeycomb android-activity

451
推荐指数
7
解决办法
16万
查看次数

ActionBar文字颜色

如何更改ActionBar的文本颜色?我继承了Holo Light主题,我能够改变ActionBar的背景,但是我没有找到调整文本颜色的属性是什么.


好的,我可以使用android:textColorPrimary属性更改文本颜色,但它也会更改ActionBar按钮上发生溢出时显示的下拉菜单的文本颜色.知道如何更改那些下拉菜单/列表的颜色吗?

android android-3.0-honeycomb android-actionbar android-text-color

274
推荐指数
15
解决办法
26万
查看次数

动画片段之间的过渡

我试图动画片段之间的过渡.我从以下Android片段和动画中得到了答案

FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_right);

DetailsFragment newFragment = DetailsFragment.newInstance();

ft.replace(R.id.details_fragment_container, newFragment, "detailFragment");

// Start the animated transition.
ft.commit();
Run Code Online (Sandbox Code Playgroud)

还有我的R.anim.slide_in_left

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
        <translate android:fromXDelta="50%p" android:toXDelta="0"
            android:duration="@android:integer/config_mediumAnimTime"/>
       <alpha android:fromAlpha="0.0" android:toAlpha="1.0"
            android:duration="@android:integer/config_mediumAnimTime" />
</set>
Run Code Online (Sandbox Code Playgroud)

但当我尝试这个时,它表明了

02-08 16:27:37.961: ERROR/AndroidRuntime(1717): FATAL EXCEPTION: main
02-08 16:27:37.961: ERROR/AndroidRuntime(1717): java.lang.RuntimeException: Unknown animator name: translate
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:129)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:126)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.createAnimatorFromXml(AnimatorInflater.java:93)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.animation.AnimatorInflater.loadAnimator(AnimatorInflater.java:72)
02-08 16:27:37.961: ERROR/AndroidRuntime(1717):     at android.app.FragmentManagerImpl.loadAnimator(FragmentManager.java:621)
02-08 16:27:37.961: …
Run Code Online (Sandbox Code Playgroud)

android android-3.0-honeycomb

273
推荐指数
8
解决办法
28万
查看次数

Android片段和动画

你应该如何实现那种例如Honeycomb Gmail客户端使用的滑动?

可以TransactionManager通过添加和删除片段自动处理这个,由于模拟器是幻灯片,所以很难测试这个:)

android android-fragments android-3.0-honeycomb

260
推荐指数
4
解决办法
23万
查看次数

如何在创建活动之前隐藏操作栏,然后再次显示它?

我需要在我的蜂窝应用程序中实现启动画面.我在activity的onCreate中使用此代码来显示splash:

setContentView(R.layout.splash);
getActionBar().hide();
Run Code Online (Sandbox Code Playgroud)

并且此代码在某段时间后显示主UI:

setContentView(R.layout.main);
getActionBar().show();
Run Code Online (Sandbox Code Playgroud)

但是调用onCreate并且出现splash 之前,显示操作栏时会有少量时间.

如何让动作栏隐形?

我尝试将主题应用于没有操作栏的活动:

<item name="android:windowActionBar">false</item>
Run Code Online (Sandbox Code Playgroud)

但在这种情况下getActionBar()总是返回null,我发现无法再显示它.

android android-3.0-honeycomb android-actionbar

240
推荐指数
12
解决办法
30万
查看次数

如何使用以编程方式创建的内容视图向活动添加片段

我想将一个片段添加到以编程方式实现其布局的Activity.我查看了Fragment文档,但没有很多示例描述我需要的内容.这是我尝试编写的代码类型:

public class DebugExampleTwo extends Activity {

    private ExampleTwoFragment mFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FrameLayout frame = new FrameLayout(this);
        if (savedInstanceState == null) {
            mFragment = new ExampleTwoFragment();
            FragmentTransaction ft = getFragmentManager().beginTransaction();
            ft.add(frame.getId(), mFragment).commit();
        }

        setContentView(frame);
    }
}
Run Code Online (Sandbox Code Playgroud)

...

public class ExampleTwoFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, 
                             ViewGroup container, 
                             Bundle savedInstanceState) {
        Button button = new Button(getActivity());
        button.setText("Hello There");
        return button;
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码编译但在开始时崩溃,可能是因为我FragmentTransaction.add()的错误.这样做的正确方法是什么?

android android-fragments android-3.0-honeycomb

224
推荐指数
8
解决办法
42万
查看次数

getActionBar()返回null

我有一个奇怪的问题.我正在使用targetsdk 13制作应用程序.

在我的主要活动的onCreate方法中,我打电话getActionBar()来设置我的操作栏.这在Android 3.2模拟器上运行时工作正常,但在使用Android 3.0和3.1时,该getActionBar()方法返回null.

我发现这非常奇怪,我看不出有什么理由会这样做.这是模拟器的错误还是我需要做的事情,以确保我的应用程序有一个操作栏?

解决方案: 我想我找到了解决这个问题的方法.我没有使用setContentView来设置活动的布局.相反,我正在使用fragmentTransaction.add(android.R.id.content, mFragment, mTag)向活动添加片段.这在3.2中运行良好,但在早期的蜂窝版本中,如果您不在方法中使用setContentView,则操作栏显然未设置onCreate().所以我通过setContentView()在我的方法中使用方法修复它,onCreate()并为它提供包含空FrameLayout的布局.我仍然可以fragmentTransaction.add(android.R.id.content, mFragment, mTag)像以前一样使用该方法.

这不是最漂亮的修复,但它确实有效.

android android-3.0-honeycomb android-actionbar

173
推荐指数
13
解决办法
16万
查看次数

是否故意将PreferenceFragment排除在兼容性包之外?

我正在寻找可以应用于3.0和3.0之前的设备的首选项.发现PreferenceActivity包含已弃用的方法(虽然这些方法在随附的示例代码中使用),我查看PreferenceFragement了兼容性包以解决我的困境.

但是,它似乎PreferenceFragment不在兼容包中.谁能告诉我这是否是故意的?如果是这样,我可以轻松定位一系列设备(即<3.0和> = 3.0)还是我必须跳过篮球?如果没有故意排除,我们是否可以期待兼容包的新版本?或者是否有另一种可以安全使用的解决方法?

干杯

詹姆士

compatibility android android-3.0-honeycomb

153
推荐指数
6
解决办法
4万
查看次数

如何通过代码设置Fragment标签?

我没有setTag(String tagName)Fragment课堂上找到类似方法的东西.设置Fragment我找到的标记的唯一方法是执行a FragmentTransaction并将标记名称作为参数传递.

这是Fragment通过代码显式设置标记的唯一方法吗?

android android-fragments android-3.0-honeycomb

135
推荐指数
3
解决办法
16万
查看次数

如何实现Android ActionBar后退按钮?

我有一个listview的活动.当用户单击该项目时,项目"viewer"将打开:

List1.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) {

        Intent nextScreen = new Intent(context,ServicesViewActivity.class);
        String[] Service = (String[])List1.getItemAtPosition(arg2);

        //Sending data to another Activity
        nextScreen.putExtra("data", datainfo);
        startActivityForResult(nextScreen,0);
        overridePendingTransition(R.anim.right_enter, R.anim.left_exit);
    }
});
Run Code Online (Sandbox Code Playgroud)

这样可以正常工作,但在操作栏上,应用程序图标旁边的后退箭头不会被激活.我错过了什么吗?

java android android-3.0-honeycomb

124
推荐指数
7
解决办法
19万
查看次数