Android - пользовательский интерфейс исчезает после запуска - PullRequest
0 голосов
/ 31 мая 2011

Я запускаю простое действие ACTION.VIEW, чтобы открыть веб-браузер. Но когда пользователь нажимает клавишу «назад», он возвращается к моему начальному приложению. Приложение работает отлично, за исключением того, что все основные элементы интерфейса исчезли.

Кто-нибудь знает почему?

Вот как я запускаю веб-браузер:

    //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 () вызываются как обычно. Чего я не понимаю, так это того, что жизненный цикл кнопок «назад» и «домой» работает отлично. Пользователь может вручную выйти из приложения и вернуться без проблем с пользовательским интерфейсом. Проблема возникает только при возвращении из этого вызова startActivity ()?

Кроме того, мне не нужно сохранять какие-либо конкретные значения пользовательского интерфейса .... Я просто хочу, чтобы они присутствовали в макете;)

EDIT

У меня есть представление gles, которое я использую для рисования, и я думаю, что оно отображается перед другими элементами пользовательского интерфейса .... Но я не понимаю, почему, если это так ...

Вот фрагмент 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 голосов

Когда вы запускаете веб-браузер, он использует много памяти, поэтому Android убивает ваше приложение, когда оно возвращается к активности, оно воссоздает его.Таким образом, вы должны сохранять свои динамически добавленные представления, используя onsaveinstancestate и onrestoreinstancestate. onSaveInstanceState () и onRestoreInstanceState ()

...