2013-03-22 82 views
0

开始时,应用程序看起来像'Header 1 Content 1;标题2内容2;标题3内容3'。 当你按下“转到谷歌地图”按钮,这个程序打开并搜索“朝鲜”。当您返回时,应用程序变为“标题1内容3”;标题2内容3;标题3内容3'(全部内容为3)!为什么?至少在Android 4.0.4上发布(华为荣誉官方)。如您所见,我在其中使用带有LinearLayout的ScrollView,并在其中添加item.xml中描述的视图。Android:在Google地图中搜索后发生的行为奇怪

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
      package="com.example.HelloWorld" 
      android:versionCode="1" 
      android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="10"/> 
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher"> 
     <activity android:name="MyActivity" android:label="@string/app_name"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

MyActivity.java

package com.example.HelloWorld; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class MyActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     addBlock("Header1", "Content1"); 
     addBlock("Header2", "Content2"); 
     addBlock("Header3", "Content3"); 
    } 

    public void openMaps(View view) { 
     String uri = "geo:0,0?q=North+Korea"; 
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri)); 
     startActivity(intent); 
    } 

    private void addBlock(String header, String content) { 
     final LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout); 
     final LayoutInflater factory = LayoutInflater.from(this); 
     final View view = factory.inflate(R.layout.item, null); 
     final TextView headerView = (TextView) view.findViewById(R.id.header); 
     final TextView contentView = (TextView) view.findViewById(R.id.content); 
     if (header.isEmpty()) { 
      headerView.setHeight(0); 
     } 
     headerView.setText(header); 
     contentView.setText(content); 
     linearLayout.addView(view); 
    } 
} 

main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
     > 
    <Button 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:text="Go to Google Maps" 
      android:id="@+id/button" android:onClick="openMaps"/> 
    <ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/scrollView"> 
     <LinearLayout 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:longClickable="false" android:id="@+id/linearLayout"> 
     </LinearLayout> 
    </ScrollView> 
</LinearLayout> 

item.xml

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Header" 
      android:id="@+id/header" android:layout_gravity="left|center_vertical" android:textStyle="bold" 
      android:layout_marginLeft="5dp"/> 
    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Content" 
      android:id="@+id/content" android:layout_gravity="left|center_vertical" android:layout_marginLeft="10dp" 
      android:textIsSelectable="true"/> 
</LinearLayout> 

回答

0

很难与你在代码中列出说。一种需要查看“活动”回调的功能,以查看“活动”的状态如何恢复,以及当您说要转到Google地图时该活动的状态。我从经验中了解到,当您在ScrollView中使用自己的ListView时,创建一个Parcelable数据对象来保存对象的状态并且重新创建Activity或(将其带回前面)将视图的状态恢复为您想要的特定状态。如果您使用的是Activities而不是Fragments,则可以使用onCreate()和onSavedInstanceState()回调完成此操作。如果你在那里提供更多的信息,我可以得到更多的帮助。

+0

我没有更多有影响力的代码在这个项目中。是的,我使用活动。 – Vladiator 2013-03-23 22:41:53