0

Webブラウザを表示するための簡単なACTION.VIEWアクティビティを開始しています。しかし、ユーザーが「戻る」キーを押すと、最初のアプリケーションに戻ります。すべての主要な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);
    }
4

1 に答える 1

0

Webブラウザを起動すると大量のメモリが使用されるため、Androidはアプリを強制終了し、アクティビティに戻ると再作成します。そのため、onsaveinstancestate と onrestoreinstancestate を使用して、動的に追加されたビューを保存する必要があります。 onSaveInstanceState () および onRestoreInstanceState ()

于 2012-03-01T12:21:18.007 に答える