小编Kai*_*dul的帖子

如果存在,如何从BackStack恢复Fragment

我正在学习如何使用片段.我有三个实例Fragment在类的顶部初始化.我将片段添加到这样的活动:

声明和初始化:

Fragment A = new AFragment();
Fragment B = new BFragment();
Fragment C = new CFragment();
Run Code Online (Sandbox Code Playgroud)

更换/添加:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.content_frame, A);
ft.addToBackStack(null);
ft.commit();
Run Code Online (Sandbox Code Playgroud)

这些片段工作正常.每个片段都附加到活动,并保存到后台堆栈没有任何问题.

所以当我启动AC,然后B,堆栈看起来像这样:

| |
|B|
|C|
|A|
___
Run Code Online (Sandbox Code Playgroud)

当我按下"后退"按钮时,会B被摧毁并C恢复.

但是,当我A第二次启动片段时,它不会从后端堆栈中恢复,而是添加到后端堆栈的顶部

| |
|A|
|C|
|A|
___
Run Code Online (Sandbox Code Playgroud)

但我想恢复A并销毁它上面的所有碎片(如果有的话).实际上,我只是喜欢默认的后台堆栈行为.

我该如何做到这一点?

预期:( A应该恢复,顶部碎片应该销毁)

| |
| |
| |
|A|
___
Run Code Online (Sandbox Code Playgroud)

编辑:(由A - C建议)

这是我尝试的代码:

private void selectItem(int position) { …
Run Code Online (Sandbox Code Playgroud)

android android-fragments back-stack

140
推荐指数
2
解决办法
16万
查看次数

从文件路径创建位图/ Drawable

我正在尝试从现有文件路径创建一个Bitmap或Drawable.

String path = intent.getStringExtra("FilePath");
BitmapFactory.Options option = new BitmapFactory.Options();
option.inPreferredConfig = Bitmap.Config.ARGB_8888;

mImg.setImageBitmap(BitmapFactory.decodeFile(path));
// mImg.setImageBitmap(BitmapFactory.decodeFile(path, option));
// mImg.setImageDrawable(Drawable.createFromPath(path));
mImg.setVisibility(View.VISIBLE);
mText.setText(path);
Run Code Online (Sandbox Code Playgroud)

但是setImageBitmap(),setImageDrawable()没有显示路径中的图像.我打印了路径,mText它看起来像:/storage/sdcard0/DCIM/100LGDSC/CAM00001.jpg

我究竟做错了什么?有人可以帮帮我吗?

java android bitmapfactory android-drawable

76
推荐指数
3
解决办法
14万
查看次数

在Android中缓存数据的最佳方法

我有一个ArrayList自定义的简单Serializable对象,我想缓存到磁盘并重新启动时读取.我的数据很小,大约有25个对象,最多有5个列表,所以我认为SQLite会有点过分.在我将使用的iPhone世界中NSKeyedArchiver,NSKeyedUnarchiver哪个效果很好.在Android上,我试图用a FileOutputStream和for来做这个,ObjectOutputStream虽然结果是相同的,但性能很糟糕.是否有更好的(更快阅读)方式将小对象缓存到Android中的文件系统?

android

24
推荐指数
1
解决办法
4万
查看次数

导航抽屉中的可折叠列表项

我已经阅读了android Navigation Drawer的文档但是没有关于如何在导航抽屉中创建可折叠/可扩展List项的信息.我对android有所了解,ExpandableListView但我认为这不是创建它的方法.我想创建这样的嵌套项:

在此输入图像描述

android navigation-drawer

19
推荐指数
1
解决办法
9501
查看次数

如何将SpannedString转换为Spannable

您好我在textview中设置了一些文本.

TextView tweet = (TextView) vi.findViewById(R.id.text);
tweet.setText(Html.fromHtml(sb.toString()));
Run Code Online (Sandbox Code Playgroud)

然后我需要将文本转换TextViewSpannble.所以我这样做:

Spannable s = (Spannable) tweet.getText();
Run Code Online (Sandbox Code Playgroud)

我需要转换它,Spannable因为我传入了TextView一个函数:

    private void stripUnderlines(TextView textView) {
            Spannable s = (Spannable) textView.getText();
            URLSpan[] spans = s.getSpans(0, s.length(), URLSpan.class);
            for (URLSpan span : spans) {
                int start = s.getSpanStart(span);
                int end = s.getSpanEnd(span);
                s.removeSpan(span);
                span = new URLSpanNoUnderline(span.getURL());
                s.setSpan(span, start, end, 0);
            }
            textView.setText(s);
        }

private class URLSpanNoUnderline extends URLSpan {
        public URLSpanNoUnderline(String url) {
            super(url);
        }

        @Override
        public void updateDrawState(TextPaint …
Run Code Online (Sandbox Code Playgroud)

android textview spannable

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

恢复后停止重新创建片段?

我正在使用几个fragments来动态添加activity.一切正常,当我按下后退按钮时,fragments会去backstack.当resume它出现时,它会出现.但每次都在Resume,它正在重新创造fragment和呼唤onCreateView.我知道这是fragment生命周期的正常行为.

这是我的onCreateView:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View rootView = inflater.inflate(
            R.layout.competitive_programming_exercise, container, false);
    return rootView;
}
Run Code Online (Sandbox Code Playgroud)

我想阻止那些fragment重新创作.我尝试过,onSavedInstanstate但没有任何工作.我怎么能做到这一点?

android onresume android-fragments back-stack

11
推荐指数
3
解决办法
1万
查看次数

如何在嵌套片段内的两个子片段之间进行通信

我可以fragment通过回调轻松地在两个活动之间进行通信interface.按照这种方式,我已经实现了一个接口来ParentFragment进行通信.

但是在活动的情况下,我正在使用 -

 @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mCallback = (OnHeadlineSelectedListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString()
                    + " must implement OnHeadlineSelectedListener");
        }
    }
Run Code Online (Sandbox Code Playgroud)

在目前的情况下,我使用mCallback = (OnHeadlineSelectedListener) getParentFragment();而不是mCallback = (OnHeadlineSelectedListener) activity;.一切都运作良好.这种方法可以吗?或者我应该把它改成另一个线程onAttach()呢?

android interface fragment

10
推荐指数
1
解决办法
2238
查看次数

导航抽屉Android API特定的布局属性

您好我已经创建了一个带有ListView导航的导航抽屉使用ActionBar Sherlockandroid support Library v4旧版本兼容性(我的应用程序的minSdkversion ="8"),其中我在ListView中使用了textview的一些属性:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/title"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItemSmall"
    android:gravity="center_vertical"
    android:paddingLeft="16dp"
    android:paddingRight="5dp"
    android:textColor="#fff"
    android:background="?android:attr/activatedBackgroundIndicator"
    android:minHeight="?android:attr/listPreferredItemHeightSmall"/>
Run Code Online (Sandbox Code Playgroud)

这被示出误差?android:attr/activatedBackgroundIndicator是从API 11和?android:attr/textAppearanceListItemSmall&?android:attr/listPreferredItemHeightSmall是从API 14.

我设法?android:attr/activatedBackgroundIndicator通过用actionBar Sherlock替换它来支持?attr/activatedBackgroundIndicator.但我没有发现其他两个属性的任何等价.有?attr/textAppearanceListItemSmall在动作条福尔摩斯,但它不能正常工作.

那么这些属性的等价性为2.1以上的所有API提供支持?

api layout android

9
推荐指数
2
解决办法
1万
查看次数

如何在activatedBackgroundIndicator中的选定/突出显示的列表项上设置自定义颜色

您好我正在使用ActionBarSherlockNavigation Drawer开发一个应用程序.我用actionBar Sherlock创建了一个初始导航抽屉,如下所示:

activatedBackgroundIndicator

一切似乎都没问题但我想用我的自定义颜色更改突出显示的列表项的默认蓝色.我试过这个链接,但它没有用.我需要做些什么来实现自定义高亮颜色?

android actionbarsherlock

8
推荐指数
1
解决办法
8964
查看次数

如何在列表视图上创建叠加层布局

我有一个将填充的列表视图,AsyncTask在应用程序的底部边缘,我需要显示一个固定的叠加布局,如下所示:

在此输入图像描述

但我无法弄明白我如何在xml中做到这一点?这是我目前的layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

   <!-- Probably I need to do something here  -->

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android overlay

8
推荐指数
1
解决办法
9993
查看次数