如何回到一个活动previous状态?状态、previous

2023-09-12 22:17:20 作者:梦还在残留

我创建了一个称为viewActivity活动。它显示在windows系统中的共享文件和文件夹。我使用的功能listFiles()从jcifs.smb包。最初,共享驱动器的显示方式。我做了一个选项,以调用listFiles()函数的递归。也就是说,当我点击的特定文件夹中的驱动器,该文件的内容被显示。当我再次点击这是previous文件夹中的文件夹,其内容也会显示。这里的问题是,当我preSS在Android上的后退按钮,它调用回到previous文件夹中的previous活动代替。那么如何实现这个功能?

  //我的包
包com.android.accesspc;

进口java.net.MalformedURLException;
进口jcifs.smb.NtlmPasswordAut​​hentication;
进口jcifs.smb.SmbException;
进口jcifs.smb.SmbFile;
进口android.app.Activity;
进口android.os.Bundle;
进口android.view.View;
进口android.widget.Button;
进口android.widget.LinearLayout;
进口android.widget.ScrollView;
进口android.widget.Toast;

公共类viewActivity延伸活动{

INT标识= 0;
SmbFile previous = NULL;
诠释计数= 0;
空列表(SmbFile OBJ)
{
    滚动型SV =新的滚动型(本);
    的LinearLayout布局=新的LinearLayout(本);
    layout.setOrientation(00000001);
    尝试
    {
        SmbFile一个[] = obj.listFiles();
        为(最终SmbFile米:1)
        {
            如果(!m.isHidden())
            {
                按钮BTN =新的按钮(这一点);
                btn.setId(ID);
                如果(m.isDirectory())
                {
                    btn.setText(m.getName()代替(/,));
                    btn.setTextSize((浮点)20);
                    btn.setOnClickListener(新
                    View.OnClickListener()
                    {
                        公共无效的onClick(视图v)
                        {
                previous =米; //用于保存previous SMB对象
                算上++; //需要的任何文件夹pressed计数
                            列表(米);
                        }
                    });
                }
                其他
                {
                    btn.setText(m.getName());
                }
                layout.addView(BTN);
                ID ++;
            }
        }
        sv.addView(布局);
        的setContentView(SV);
    }
    赶上(SmbException E)
    {
吐司displayMsg = Toast.makeText(这一点,不能列出文件,Toast.LENGTH_SHORT);
        displayMsg.show();
    }
}

字符串IP,姓名,密码;

@覆盖
保护无效的onCreate(包savedInstanceState){
    // TODO自动生成方法存根
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.view);

    IP =192.168.0.100; //我的IP地址
    NAME =ABC; //我的Windows用户名
    密码=ABCD; //我的Windows密码

    SmbFile DIR = NULL;
    字符串URL =SMB://+ IP +/;
NtlmPasswordAut​​hentication AUTH =新NtlmPasswordAut​​hentication(空,名,密码);
    尝试
    {
        DIR =新SmbFile(URL,AUTH);
    }
    赶上(MalformedURLException的E1)
    {
    吐司displayMsg = Toast.makeText(这一点,网络错误,Toast.LENGTH_SHORT);
        displayMsg.show();
    }
    //用于列出SMB对象的文件和文件夹开始
    列表(目录);
}

@覆盖
公共无效onBack pressed(){
    // TODO自动生成方法存根
    如果(!(计数== 0))
    {
        //如果计数不为0,这意味着用户点击一个文件夹
    //我们有previous拿着previous SMB值有现在被称为
        列表(previous);
    }
    其他
    {
        //默认行为
        super.onBack pressed();
    }
}

}
 

解决方案

重写super.onBack pressed()

  @覆盖
 公共布尔onBack pressed(){

 //你的code
 }
 

应能在2.3.3

在智联招聘出现了重复投递的状态,是怎么回事 急求大家帮助

I have created an activity called viewActivity. It displays the shared files and folders in windows system. I am using the function listFiles() from jcifs.smb package. Initially the shared drives are displayed. I have made an option to call the listFiles() function recursively. That is when I click a particular folder in a drive, the contents of the file are displayed. When I once again click the folder which is inside the previous folder, its content are also displayed. The problem here is when I press the back button in android, it calls the previous activity instead of going back to previous folder. So how to achieve this functionality?

 //my package
package com.android.accesspc;

import java.net.MalformedURLException;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import android.widget.Toast;

public class viewActivity extends Activity{

int id=0;
SmbFile previous=null;
int count=0;
void list(SmbFile obj)
{
    ScrollView sv = new ScrollView(this);
    LinearLayout layout=new LinearLayout(this);
    layout.setOrientation(0x00000001);
    try
    {
        SmbFile a[]=obj.listFiles();
        for(final SmbFile m:a)
        {
            if(!m.isHidden())
            {
                Button btn = new Button(this); 
                btn.setId(id); 
                if(m.isDirectory())
                {
                    btn.setText(m.getName().replace("/","")); 
                    btn.setTextSize((float)20);
                    btn.setOnClickListener(new 
                    View.OnClickListener()
                    {
                        public void onClick(View v) 
                        {
                previous=m;//used to hold previous smb object
                count++;//takes count of no of folders pressed 
                            list(m);
                        }
                    });
                }
                else
                {
                    btn.setText(m.getName()); 
                }
                layout.addView(btn);
                id++;
            }
        }
        sv.addView(layout);
        setContentView(sv);
    }
    catch(SmbException e)
    {
Toast displayMsg=Toast.makeText(this,"cannot list files",Toast.LENGTH_SHORT);
        displayMsg.show();
    }
}

String ip,name,password;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.view);

    ip="192.168.0.100";//my ip address
    name="abc";//my windows username
    password="abcd";//my windows password

    SmbFile dir=null;
    String url= "smb://" + ip + "/";
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication(null, name, password);
    try 
    {
        dir = new SmbFile(url, auth);
    } 
    catch (MalformedURLException e1) 
    {
    Toast displayMsg=Toast.makeText(this,"Network error",Toast.LENGTH_SHORT);
        displayMsg.show();
    }
    //used to list files and folders of smb object initially
    list(dir);
}

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    if(!(count==0))
    {
        //if count is not 0,that means the user has clicked a folder
    //we have "previous" holding previous smb value which  has to be called now
        list(previous);
    }
    else
    {
        //the default behaviour
        super.onBackPressed();
    }
}

}

解决方案

Override the super.onBackPressed()

 @Override
 public boolean onBackPressed(){

 //your code
 }

Should work on 2.3.3