java - 如何在方向更改时保留幻灯片的特定文本?

标签 java android

我的应用程序中有一个幻灯片,每张幻灯片都有一些相关的文本。文字和图像是动态的。我如何在方向更改时保留特定幻灯片的文本,以便在方向更改后 View 保持不变。我基本上想知道方向发生更改的幻灯片编号或索引。

我正在做的事情如下:

@Override
public Object onRetainNonConfigurationInstance() {

    ArrayList<Object> objList = new ArrayList<Object>();

    Bitmap bitmapList[] = null;
    String data = "";
    try {
        bitmapList = new Bitmap[slides.size()];

        Log.e("ON", "onRetainNonConfigurationInstance() ");
        if (gallery != null) {
            for (int i = 0; i < imgViews.length; i++) {
                LoaderImageView loaderImageView = imgViews[i];
                if (loaderImageView != null) {
                    Bitmap bitmap = loaderImageView.getImageBitmap();
                    data = slides.get(i).getBody();
                    //System.out.println("the body text is: " + data);
                    if (bitmap != null) {
                        bitmapList[i] = new BitmapDrawable(bitmap).getBitmap();
                    }
                }
            }
        }

        objList.add(bitmapList);
        objList.add(isDisplayingText);
        objList.add(data);

    } catch (Exception e) {
        Log.e("Exception ", "LargeSlideShow.onRetain  Message = " + e.toString());
    } catch (Error e) {
        Log.e("Error ", "LargeSlideShow.onRetain   Message = " + e.toString());
    }
    return objList;
}

在 onCreate 中,我是这样做的:

onCreate()
{  ...

ArrayList<Object> obj1 = (ArrayList<Object>) getLastNonConfigurationInstance();

            if (obj1 != null) {

                bitmaps = (Bitmap[]) obj1.get(0);
                boolean isText = (Boolean) obj1.get(1);
                String data = (String) obj1.get(2);

                System.out.println("The Text received in on Create is:  " + data);
                if (isText == true) {
                    int vis = disText.getVisibility();
                    if (vis == View.GONE) {

                        String formattedBody = makeFormattedBody(data);
                        webView.loadData(formattedBody, "webView/html", "utf-8");
                        disText.setVisibility(View.VISIBLE);
                        disText.startAnimation(animShow);
                        isDisplayingText = true;
                    } else if (vis == View.VISIBLE) {
                        disText.startAnimation(animHide);
                        disText.setVisibility(View.GONE);
                        isDisplayingText = false;
                    }

                }
  ... }

我哪里漏拍了,请告诉我。任何帮助表示赞赏。

最佳答案

您需要在您的 Activity 中重写“onConfigurationChanged”函数并使该 Activity 能够处理 manifest.xml 中的更改:

    <activity android:name=".SlideView"  android:configChanges="orientation"> </activity>

然后您可以再次设置 View :

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    setContentView(R.layout.oneSlide);
    setUpView(); // configure the view e.g. add the picture and the text
}

关于java - 如何在方向更改时保留幻灯片的特定文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6517556/

相关文章:

java - 我如何知道另一个类何时更新?

java - 无法部署由 NetBeans 构建的任何小程序

java - JButton ActionListener 两人游戏

java - 不使用 Intent 移动包 - android

android - OSMDroid 加载图 block 非常慢

android - 在 Lollipop 中获取键盘高度

java - 带字符串的 Android NumberPicker

java - Cassandra 连接失败

java - 尝试围绕一个点旋转,但无论如何都会失去精度

Android,xhdpi - 堆