Android - UI在startActivity之后消失

时间:2011-05-31 15:42:37

标签: android android-layout android-widget android-ui

我正在启动一个简单的ACTION.VIEW活动来显示Web浏览器。 但是当用户按下“后退”键时,它将返回到我的初始应用程序。该应用程序运行正常,但所有主要UI元素都已消失。

任何人都知道为什么?

以下是我启动网络浏览器的方法:

    //Go to web page
    ImageButton web = (ImageButton) _gears.findViewById(R.id.Web);
    web.setOnClickListener(
        new View.OnClickListener() 
        {         
            @Override
            public void onClick(View v)
            {
                try 
                {
                    String url = "http://apps.toonboom.com/flip-boom-lite-ipad";
                    Intent i = new Intent(Intent.ACTION_VIEW);
                    Uri u = Uri.parse(url);
                    i.setData(u);
                    _mainActivity.startActivity(i);
                 } 
                catch (ActivityNotFoundException e) 
                {
                      // Raise on activity not found
                    Toast.makeText(_mainActivity.getApplicationContext(), "Browser not found.", Toast.LENGTH_SHORT);
                }
             }
        });

从该浏览器页面返回时,正常调用onStart()和onResume()。我不明白的是后背和主页按钮生命周期完美无缺。用户可以手动取消应用程序并在没有任何UI问题的情况下返回。只有从startActivity()调用返回时才会出现问题?

此外,我不需要保留任何特定的UI值....我只是希望它们出现在布局中;)

修改

我有一个gles视图,我用它来绘制,我认为它显示在其他UI元素的前面......但我不明白为什么如果是这样......

这是一段xml和onCreate方法:

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent"
android:layout_height="fill_parent"    
android:id="@+id/MainLayout">   


<!--  This is a dummy layout so we can add our custom GlView dynamically to this relative position -->
<LinearLayout 
    android:id="@+id/SurfaceViewLayout" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"
    android:orientation="vertical"/>

<!--  This is a dummy layout so we can add the timeline dynamically to this relative position -->
<HorizontalScrollView 
        android:id="@+id/TlScroller"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_margin="0dip"
        android:padding="0dip"
        android:scrollbars="none"
        android:fillViewport="false"
        android:scrollbarFadeDuration="0"
        android:scrollbarDefaultDelayBeforeFade="0"
        android:fadingEdgeLength="0dip"
        android:scaleType="centerInside">

        <!-- HorizontalScrollView can only host one direct child -->
        <LinearLayout 
            android:id="@+id/TimelineContent" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_alignParentTop="true"
            android:layout_alignParentLeft="true"
            android:layout_margin="0dip"
            android:padding="0dip"
            android:scaleType="centerInside"/>

    </HorizontalScrollView > 

<RelativeLayout
    android:id="@+id/BottomTools" 
    android:orientation="horizontal" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/TlScroller" >

    <ImageButton  
        android:id="@+id/PaletteBtn"
        android:layout_width="30dip"
        android:layout_height="30dip" 
        android:background="@android:color/transparent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="5dip"
        android:layout_marginBottom="60dip"
        android:src="@drawable/palette44x44"
        android:scaleType="centerInside"/>


     <RelativeLayout 
            android:id="@+id/PadLayout" 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:background="@android:color/transparent"
            android:layout_centerHorizontal="true"
            android:layout_alignParentBottom="true"
            android:src="@drawable/pad_btn"
            android:scaleType="centerInside">

         <ImageButton  
            android:id="@+id/PadBtn"
            android:layout_width="75dip"
            android:layout_height="75dip" 
            android:background="@android:color/transparent"
            android:layout_centerInParent="true"
            android:src="@drawable/pad_btn"
            android:scaleType="centerInside"/>

         <TextView
            android:id="@+id/FrameCounter" 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="0dip"
            android:padding="0dip"
            android:layout_centerInParent="true"
            android:textColor="#000000"
            android:text="#/x"/>
    </RelativeLayout>

   <ImageButton  
        android:id="@+id/PreviousBtn"
        android:layout_width="40dip"
        android:layout_height="40dip" 
        android:background="@android:color/transparent"
        android:layout_toLeftOf="@+id/PadLayout"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="15dip"
        android:src="@drawable/previous_btn"
        android:scaleType="centerInside"
        android:scaleHeight="30%"
        android:scaleWidth="30%"/>

// Goes like that with other ImageButton till the end bracket

= = =

@Override protected void onCreate(Bundle icicle) 
    {
        super.onCreate(icicle);

        //Set the main layout element
        setContentView(R.layout.ui);


           // Then most buttons are created like this . . .

           //Create the tools pop-up menu
       ImageButton toolBtn = (ImageButton) this.findViewById(R.id.CurrentToolBtn);
       _tools = new ToolsPopup(toolBtn);
    }

1 个答案:

答案 0 :(得分:0)

当您启动Web浏览器时,它会占用大量内存,因此安卓会杀死您的应用,当它返回活动时会重新创建它。因此,您应该使用onsaveinstancestate和onrestoreinstancestate保存动态添加的视图。 onSaveInstanceState () and onRestoreInstanceState ()