安卓一个Activity里面写好内容跳到另外一个Activity选择文件之后回来,其他内容消失解决办法

当在Android应用中从一个Activity跳转到文件选择页面后返回,原Activity的内容消失。本文通过示例展示了如何避免这种情况,提供了一个完整的解决方案,包括布局文件和Java代码,涉及ListView、Intent和数据传递等关键部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里以选择文件为例子供大家学习:

布局文件: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"
              android:background="@drawable/bg4"
        >
    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:layout_marginTop="100dp">
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_marginLeft="10dp"
                  android:textSize="18dp"
                  android:textColor="@color/black"
                  android:text="信息标题: "/>
        <EditText
                  android:layout_width="fill_parent"
                  android:layout_weight="1"
                  android:layout_height="40dp"
                  android:layout_marginRight="10dp"
                  android:singleLine="true"/>
    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:orientation="horizontal"
                  android:layout_marginTop="20dp">
        <TextView android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_marginLeft="10dp"
                  android:textSize="18dp"
                  android:textColor="@color/black"
                  android:text="信息附件: "/>
        <EditText android:id="@+id/filename"
                  android:layout_width="fill_parent"
                  android:layout_weight="1"
                  android:layout_height="40dp"
                  android:layout_marginRight="10dp"
                  android:focusable="false"
                  android:singleLine="true"/>
    </LinearLayout>
    <LinearLayout android:layout_width="fill_parent"
                  android:layout_height="wrap_content"
                  android:gravity="center"
                  android:orientation="horizontal">
        <Button android:id="@+id/choosebut"
                android:layout_width="70dp"
                android:layout_marginTop="5dp"
                android:layout_height="40dp"
                android:layout_marginLeft="85dp"
                android:text="浏览"/>
    </LinearLayout>


</LinearLayout>

文件选择页面布局:fileselect.xml


<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#FFFFFF"
    android:orientation="vertical" >


        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/LinearLayout1"
            android:layout_marginBottom="50dp"
            android:orientation="vertical" >


            <TextView
                android:id="@+id/mPath"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:padding="5px"
                android:textColor="#386EB3"
                android:textSize="18sp" >
            </TextView>


            <ListView
                android:id="@android:id/list"
                android:layout_width="fill_parent"
                android:layout_weight="1"
                android:layout_height="fill_parent"
                android:listSelector="@drawable/menu_item_bg">
            </ListView>
        </LinearLayout>
      //android:layout_alignParentBottom="true"放在父容器的底部
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >
        <Button
            android:id="@+id/buttonConfirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="确定"
            android:textColor="@color/black" />


        <Button
            android:id="@+id/buttonCancle"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="取消"
            android:textColor="@color/black" />
    </LinearLayout>


</RelativeLayout>

listview里面布局:file_row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="horizontal"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#ffffff"
>
<LinearLayout  
        android:orientation="horizontal"  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:padding="6px"
    >  
  <ImageView android:id="@+id/icon"
    android:layout_width="30dip"
    android:layout_height="30dip"
  >
  </ImageView>
  <TextView android:id="@+id/text"
    android:layout_gravity="center_horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    android:textColor="#767676"
  >
  </TextView>
  </LinearLayout>
</LinearLayout>

java代码:MyActivity.java

package com.example.FileExplorer;


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    private String filePath="";
    private Button choosebut;
    private EditText filename;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        filename=(EditText)findViewById(R.id.filename);
        choosebut=(Button)findViewById(R.id.choosebut);
        choosebut.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

  //跳转到要去的Activity里面
                Intent intent=new Intent(MyActivity.this, MyFileManagerActivity.class);
                startActivityForResult(intent, 0);


            }
        });
    }

//重写这个方法获取上个Activity里面返回来的值
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

//注意这里的20要跟你上个Activity里面传的值一样  否则接不到
        if(20==resultCode)
        {
            filePath=data.getExtras().getString("filePath");
            filename.setText(filePath);
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
}

java代码:MyAdapter.java

package com.example.FileExplorer;


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;


import java.io.File;
import java.util.List;


public class MyAdapter extends BaseAdapter {


 private LayoutInflater mInflater;
 private Bitmap mIcon1;
 private Bitmap mIcon2;
 private Bitmap mIcon3;
 private Bitmap mIcon4;
 private List<String> items;
 private List<String> paths;
//      public int selectedposition=com.example.FileExplorer.MyFileManagerActivity.Selectedposition;
      public int selectedposition;
      public MyAdapter(Context context, List<String> it, List<String> pa, int select){
        this.selectedposition = select;
        mInflater=LayoutInflater.from(context);
        items=it;
        paths=pa;
        mIcon1=BitmapFactory.decodeResource(context.getResources(),R.drawable.back01);
        mIcon2=BitmapFactory.decodeResource(context.getResources(),R.drawable.back02);
        mIcon3=BitmapFactory.decodeResource(context.getResources(),R.drawable.folder);
        mIcon4=BitmapFactory.decodeResource(context.getResources(),R.drawable.doc);
        }






    @Override
    public int getCount() {
        return items.size();
    }


    @Override
    public Object getItem(int position) {
        return items.get(position);
    }


    @Override
    public long getItemId(int position) {
        return position;
    }


    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if(convertView==null){


          convertView=mInflater.inflate(R.layout.file_row,null);
          holder=new ViewHolder();
          holder.text=(TextView)convertView.findViewById(R.id.text);
          holder.icon=(ImageView)convertView.findViewById(R.id.icon);
          convertView.setTag(holder);
        }else{
          holder=(ViewHolder)convertView.getTag();
        }
      try{
          File f=new File(paths.get(position).toString());


          if(items.get(position).toString().equals("b1"))
          {
              holder.text.setText("返回根目录..");
              holder.icon.setImageBitmap(mIcon1);
          }
          else if(items.get(position).toString().equals("b2"))
          {
              holder.text.setText("返回上一层..");
              holder.icon.setImageBitmap(mIcon2);
          }
          else
          {
              holder.text.setText(f.getName());
              if(f.isDirectory())
              {
                  holder.icon.setImageBitmap(mIcon3);
              }
              else
              {
                  holder.icon.setImageBitmap(mIcon4);
              }
          }
      }catch (Exception e){
          e.printStackTrace();
      }
        return convertView;
 }




    private class ViewHolder
    {
        TextView text;
        ImageView icon;
    }
}
java代码:MyFileManagerActivity.java

package com.example.FileExplorer;


import android.app.ListActivity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.*;


import java.io.File;
import java.util.ArrayList;
import java.util.List;


public class MyFileManagerActivity extends ListActivity {


    private List<String> items = null;   //�б�
    private List<String> paths = null;   //·��
    private String rootPath = "/sdcard/";   //��·��
    private String curPath = "/"; //��ǰ·��
    private TextView mPath;
    public int Selectedposition=-1;
    private BaseAdapter FileAdapter;
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);


        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.fileselect);
        mPath = (TextView) findViewById(R.id.mPath);
        Button buttonConfirm = (Button) findViewById(R.id.buttonConfirm);
        buttonConfirm.setOnClickListener(new OnClickListener() {


            public void onClick(View v) {

//将要传的值,在这里传过去
                Intent data = new Intent(MyFileManagerActivity.this,MyActivity.class);
                data.putExtra("filePath",curPath);

//注意:这里写的“20”接的时候判断那里也要写20
                setResult(20,data);
//                startActivity(data);
                finish();


            }
        });
        Button buttonCancle = (Button) findViewById(R.id.buttonCancle);
        buttonCancle.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                finish();
            }
        });
        getFileDir(rootPath);


    }


    private void getFileDir(String filePath) {
        mPath.setText(filePath);
        items = new ArrayList<String>();
        paths = new ArrayList<String>();
        File f = new File(filePath);
        File[] files = f.listFiles();


        if (!filePath.equals(rootPath)) {
            items.add("b1");
            paths.add(rootPath);
            items.add("b2");
            paths.add(f.getParent());
        }
        if (files==null){


        }else{
            for (int i = 0; i < files.length; i++) {
                File file = files[i];
                items.add(file.getName());
                paths.add(file.getPath());
            }


        }
        FileAdapter=new MyAdapter(this, items, paths,Selectedposition);
        setListAdapter(FileAdapter);


    }


    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
//       Selectedposition=position;
        System.out.println("<<<<<<<<"+Selectedposition);
         try {
             File file = new File(paths.get(position));
             if (file.isDirectory()) {
                 curPath = paths.get(position);
                 v.setBackgroundColor(Color.WHITE);
                 getFileDir(paths.get(position));
             } else{
                 v.setSelected(true);
                 Selectedposition=position;
                 curPath = paths.get(position);
                 System.out.println("<<<<<<<<"+position);
             }


         }catch (Exception e){


             e.printStackTrace();
       }

    }

}
 小五奉上源码



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值