单击操作栏后退按钮时,Android在listview上维护数据
大家好,我在使用ActionBar的后退按钮时遇到了问题。从活动A转到活动B时,我希望保留listview的数据。但是,当我从活动B单击操作栏的后退按钮时,我以前的数据没有保留。然而,当我点击后退按钮时,数据仍然存在。知道为什么会这样吗?我非常感谢你的帮助。谢谢单击操作栏后退按钮时,Android在listview上维护数据,android,listview,Android,Listview,大家好,我在使用ActionBar的后退按钮时遇到了问题。从活动A转到活动B时,我希望保留listview的数据。但是,当我从活动B单击操作栏的后退按钮时,我以前的数据没有保留。然而,当我点击后退按钮时,数据仍然存在。知道为什么会这样吗?我非常感谢你的帮助。谢谢导入java.io.BufferedReader; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import
导入java.io.BufferedReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.json.JSONArray;
import org.json.JSONObject;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.DrawerLayout;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.Toast;
public class Projects_Accel extends Activity{
ImageView iv;
public DrawerLayout mDrawerLayout;
public ListView mDrawerList;
//public ActionBarDrawerToggle mDrawerToggle;
// NavigationDrawer title "Nasdaq" in this example
public CharSequence mDrawerTitle;
// App title "Navigation Drawer" in this example
public CharSequence mTitle;
// slider menu items details
public String[] navMenuTitles;
public TypedArray navMenuIcons;
AlertDialog alertDialog;
public ArrayList<NavDrawerItem> navDrawerItems;
public NavDrawerListAdapter adapter;
public boolean connect=false,logged=false;
public String db_select;
ListView l1;
String mPwd,UName1="Success",UName,ret;
public Iterator<String> itr;
//private final String SERVICE_URL = "http://10.54.3.208:8080";
public static final String PREFS_NAME = "MyPrefsFile";
private final String TAG = "Project_Accel";
ArrayList<String> todoItems;
Boolean isInternetPresent = false;
ConnectionDetector cd;
ArrayAdapter<String> aa;
public List<String> list1=new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.sliding_project);
SharedPreferences prefs = getSharedPreferences(PREFS_NAME, 0);
final String myVariable = prefs.getString("EMP_ID", "mUname");
l1 = (ListView)findViewById(R.id.list);
iv = (ImageView)findViewById(R.id.imageView2);
mTitle = mDrawerTitle = getTitle();
// getting items of slider from array
navMenuTitles = getResources().getStringArray(R.array.nav_drawer_items);
// getting Navigation drawer icons from res
navMenuIcons = getResources()
.obtainTypedArray(R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
// list item in slider at 1 Home Nasdaq details
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons.getResourceId(0, -1)));
// list item in slider at 2 Facebook details
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons.getResourceId(1, -1)));
// list item in slider at 3 Google details
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons.getResourceId(2, -1)));
// list item in slider at 4 Apple details
// Recycle array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting list adapter for Navigation Drawer
adapter = new NavDrawerListAdapter(getApplicationContext(),navDrawerItems);
mDrawerList.setAdapter(adapter);
if (savedInstanceState == null)
{
displayView(0);
}
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PopupMenu popup = new PopupMenu(getBaseContext(), v);
/** Adding menu items to the popumenu */
popup.getMenuInflater().inflate(R.menu.main, popup.getMenu());
popup.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()){
case R.id.Home:
Intent a = new Intent(Projects_Accel.this,Design_Activity.class);
startActivity(a);
Projects_Accel.this.finish();
// return true;
break;
case R.id.Logout:
/*Intent z = new Intent(this,MainActivity.class);
z.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(z);
this.finish();*/
Intent z = new Intent(Projects_Accel.this,MainActivity.class);
z.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(z);
Projects_Accel.this.finish();
// return true;
break;
}
return true;
}
});
popup.show();
}
});
todoItems = new ArrayList<String>();
aa = new ArrayAdapter<String>(this,R.layout.project_list,R.id.title,todoItems);
l1.setAdapter(aa);
todoItems.clear();
//receivedName =
cd = new ConnectionDetector(getApplicationContext());
isInternetPresent = cd.isConnectingToInternet();
if(isInternetPresent)
{
try
{
validat_user(myVariable);
final Handler handler = new Handler();
handler.postDelayed( new Runnable() {
@Override
public void run() {
todoItems.clear();
validat_user(myVariable);
handler.postDelayed( this, 60 * 1000 );
}
}, 60 * 1000 );
}
catch(Exception e)
{
display("Network error.\nPlease check with your network settings.");
}
}
else
{
display("No Internet Connection..");
}
l1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id)
{
int i3=(int) parent.getItemIdAtPosition(position);
int i4=i3+1;
Toast.makeText(getApplicationContext(), ""+i3+""+i4, Toast.LENGTH_LONG).show();
String name=(String)parent.getItemAtPosition(i4);
Toast.makeText(getApplicationContext(), name, Toast.LENGTH_LONG).show();
Intent i = new Intent(getBaseContext(),pdf.class);
i.putExtra("PROJECT", name);
startActivity(i);
}
});
}
private class SlideMenuClickListener implements
ListView.OnItemClickListener {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// display view for selected item
displayView(position);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
//setMenuBackground();
return true;
}
/*@Override
public boolean onOptionsItemSelected(MenuItem item) {
// title/icon
if (mDrawerToggle.onOptionsItemSelected(item)) {
return true;
}
// Handle action bar actions click
switch (item.getItemId()) {
case R.id.action_settings:
return true;
default:
return super.onOptionsItemSelected(item);
}
}*/
//called when invalidateOptionsMenu() invoke
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
// if Navigation drawer is opened, hide the action items
//boolean drawerOpen = mDrawerLayout.isDrawerOpen(mDrawerList);
// menu.findItem(R.id.action_settings).setVisible(!drawerOpen);
return super.onPrepareOptionsMenu(menu);
}
private void displayView(int position) {
// update the main content with called Fragment
switch (position) {
case 1:
//fragment = new Fragment2Profile();
Intent i = new Intent(Projects_Accel.this,Design_Activity.class);
startActivity(i);
Projects_Accel.this.finish();
break;
case 2:
//fragment = new Fragment3Logout();
Intent z = new Intent(Projects_Accel.this,MainActivity.class);
z.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |
Intent.FLAG_ACTIVITY_CLEAR_TASK |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(z);
Projects_Accel.this.finish();
break;
default:
break;
}
}
public void display(String msg)
{
Toast.makeText(Projects_Accel.this, msg, Toast.LENGTH_LONG).show();
}
private void validat_user(String stg1)
{
WebServiceTask wst = new WebServiceTask(WebServiceTask.POST_TASK, this, "");
wst.addNameValuePair("EMP_ID1", stg1);
// wst.addNameValuePair("Emp_PWD", stg2);
// db_select=stg1;
//display("I am");
wst.execute(new String[] { SERVICE_URL });
//display(SERVICE_URL);
}
@SuppressWarnings("deprecation")
public void no_net()
{
display( "No Network Connection");
final AlertDialog alertDialog = new AlertDialog.Builder(Projects_Accel.this).create();
alertDialog.setTitle("No Internet Connection");
alertDialog.setMessage("You don't have internet connection.\nElse please check the Internet Connection Settings.");
//alertDialog.setIcon(R.drawable.error_info);
alertDialog.setCancelable(false);
alertDialog.setButton("Close", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
alertDialog.cancel();
Projects_Accel.this.finish();
System.exit(0);
}
});
alertDialog.setButton2("Use Local DataBase", new DialogInterface.OnClickListener()
{
public void onClick(DialogInterface dialog, int which)
{
display( "Accessing local DataBase.....");
alertDialog.cancel();
}
});
alertDialog.show();
}
private class WebServiceTask extends AsyncTask<String, Integer, String>
{
public static final int POST_TASK = 1;
private static final String TAG = "WebServiceTask";
// connection timeout, in milliseconds (waiting to connect)
private static final int CONN_TIMEOUT = 12000;
// socket timeout, in milliseconds (waiting for data)
private static final int SOCKET_TIMEOUT = 12000;
private int taskType = POST_TASK;
private Context mContext = null;
private String processMessage = "Processing...";
private ArrayList<NameValuePair> params = new ArrayList<NameValuePair>();
private ProgressDialog pDlg = null;
public WebServiceTask(int taskType, Context mContext, String processMessage)
{
this.taskType = taskType;
this.mContext = mContext;
this.processMessage = processMessage;
}
public void addNameValuePair(String name, String value)
{
params.add(new BasicNameValuePair(name, value));
}
@SuppressWarnings("deprecation")
private void showProgressDialog()
{
pDlg = new ProgressDialog(mContext);
pDlg.setMessage(processMessage);
pDlg.setProgressDrawable(mContext.getWallpaper());
pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pDlg.setCancelable(false);
pDlg.show();
}
@Override
protected void onPreExecute()
{
showProgressDialog();
}
protected String doInBackground(String... urls)
{
String url = urls[0];
String result = "";
HttpResponse response = doResponse(url);
if (response == null)
{
return result;
} else
{
try
{
result = inputStreamToString(response.getEntity().getContent());
} catch (IllegalStateException e)
{
Log.e(TAG, e.getLocalizedMessage(), e);
} catch (IOException e)
{
Log.e(TAG, e.getLocalizedMessage(), e);
}
}
return result;
}
@Override
protected void onPostExecute(String response)
{
handleResponse(response);
pDlg.dismiss();
}
// Establish connection and socket (data retrieval) timeouts
private HttpParams getHttpParams()
{
HttpParams htpp = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(htpp, CONN_TIMEOUT);
HttpConnectionParams.setSoTimeout(htpp, SOCKET_TIMEOUT);
return htpp;
}
private HttpResponse doResponse(String url)
{
// Use our connection and data timeouts as parameters for our
// DefaultHttpClient
HttpClient httpclient = new DefaultHttpClient(getHttpParams());
HttpResponse response = null;
try {
switch (taskType)
{
case POST_TASK:
HttpPost httppost = new HttpPost(url);
// Add parameters
httppost.setEntity(new UrlEncodedFormEntity(params));
response = httpclient.execute(httppost);
break;
}
} catch (Exception e)
{
display("Remote DataBase can not be connected.\nPlease check network connection.");
Log.e(TAG, e.getLocalizedMessage(), e);
return null;
}
return response;
}
private String inputStreamToString(InputStream is)
{
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
try
{
// Read response until the end
while ((line = rd.readLine()) != null)
{
total.append(line);
}
}
catch (IOException e)
{
Log.e(TAG, e.getLocalizedMessage(), e);
}
// Return full string
return total.toString();
}
}
public void handleResponse(String response)
{
//display("JSON responce is : "+response);
if(!response.equals(""))
{
try {
JSONObject jso = new JSONObject(response);
int UName = jso.getInt("alert");
if(UName==1)
{
String status = jso.getString("proj");
ret=status.substring(10,status.length()-2);
todoItems.add(0, ret);
aa.notifyDataSetChanged();
}
else if(UName>1)
{
// int count=Integer.parseInt(UName);
// display("Number of Projects have been handling in AFL right now: "+count);
list1=new ArrayList<String>();
JSONArray array=jso.getJSONArray("proj");
for(int i=0;i<array.length();i++)
{
list1.add(array.getJSONObject(i).getString("PName"));
}Collections.sort(list1);
Collections.reverse(list1);
itr=list1.iterator();
while(itr.hasNext())
{
//str1=itr.next().e+"\n";
todoItems.add(0, itr.next().toString());
aa.notifyDataSetChanged();
}
//tv1.setText(str1);
}
else
{
final Context context = this;
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
context);
// set title
alertDialogBuilder.setTitle("");
// set dialog message
alertDialogBuilder
.setMessage("No Records Found!")
.setCancelable(false)
.setPositiveButton("Exit",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
// if this button is clicked, close
// current activity
Projects_Accel.this.finish();
}
});
// create alert dialog
alertDialog = alertDialogBuilder.create();
// show it
alertDialog.show();
}
} catch (Exception e) {
Log.e(TAG, e.getLocalizedMessage(), e);
return;
}
}
else
{
display("unable to reach the server");
}
}
}
导入java.io.IOException;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.Iterator;
导入java.util.List;
导入org.apache.http.HttpResponse;
导入org.apache.http.NameValuePair;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.entity.UrlEncodedFormEntity;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.DefaultHttpClient;
导入org.apache.http.message.BasicNameValuePair;
导入org.apache.http.params.BasicHttpParams;
导入org.apache.http.params.HttpConnectionParams;
导入org.apache.http.params.HttpParams;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.app.AlertDialog;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.content.DialogInterface;
导入android.content.Intent;
导入android.content.SharedReferences;
导入android.content.res.TypedArray;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.os.Handler;
导入android.support.v4.widget.DrawerLayout;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.AdapterView.OnItemClickListener;
导入android.widget.ArrayAdapter;
导入android.widget.ImageView;
导入android.widget.ListView;
导入android.widget.PopupMenu;
导入android.widget.PopupMenu.OnMenuItemClickListener;
导入android.widget.Toast;
公共类项目\u Accel扩展活动{
ImageView iv;
公共抽屉布局mDrawerLayout;
公共列表视图mDrawerList;
//公共行动bardrawertoggle mDrawerToggle;
//本例中的NavigationDrawer标题为“Nasdaq”
公共字符序列mDrawerTitle;
//本例中的应用程序标题“导航抽屉”
公共字符序列mTitle;
//滑块菜单项详细信息
公共字符串[]navMenuTitles;
公共类型Darray导航设备;
警报对话框警报对话框;
公共阵列列表;
公共导航适配器;
公共布尔连接=false,记录=false;
公共字符串db_select;
列表视图l1;
字符串mPwd,UName1=“Success”,UName,ret;
公共迭代器itr;
//专用最终字符串服务\u URL=”http://10.54.3.208:8080";
公共静态最终字符串PREFS\u NAME=“MyPrefsFile”;
私有最终字符串TAG=“Project\u Accel”;
ArrayList todoItems;
布尔值isInternetPresent=false;
连接检测器cd;
ArrayAdapter aa;
public List list1=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.Slide_项目);
SharedReferences prefs=GetSharedReferences(prefs_名称,0);
最终字符串myVariable=prefs.getString(“EMP_ID”、“mUname”);
l1=(ListView)findViewById(R.id.list);
iv=(ImageView)findViewById(R.id.imageView2);
mTitle=mDrawerTitle=getTitle();
//从数组中获取滑块项
navMenuTitles=getResources().getStringArray(R.array.nav\u抽屉\u项目);
//从res获取导航抽屉图标
navMenuIcons=getResources()
.obtainTypedArray(R.array.nav_drawer_图标);
mDrawerLayout=(抽屉布局)findViewById(R.id.抽屉布局);
mDrawerList=(ListView)findViewById(R.id.list\u slidermenu);
navDrawerItems=新的ArrayList();
//在1首页的滑块中列出项目详细信息
添加(新的NavDrawerItem(navMenuTitles[0],navMenuIcons.getResourceId(0,-1));
//在2个Facebook详细信息的滑块中列出项目
添加(新的NavDrawerItem(navMenuTitles[1],navMenuIcons.getResourceId(1,-1));
//在3谷歌详细信息的滑块中列出项目
添加(新的NavDrawerItem(navMenuTitles[2],navMenuIcons.getResourceId(2,-1));
//滑块中4个Apple details处的列表项
//循环数组
navMenuIcons.recycle();
setOnItemClickListener(新的SlideMenuClickListener());
//导航抽屉的设置列表适配器
适配器=新的NavDroperListAdapter(getApplicationContext(),NavDroperItems);
mDrawerList.setAdapter(适配器);
如果(savedInstanceState==null)
{
显示视图(0);
}
iv.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
PopupMenu popup=新的PopupMenu(getBaseContext(),v);
/**将菜单项添加到popumenu*/
popup.getMenuInflater().充气(R.menu.main,popup.getMenu());
setOnMenuItemClickListener(新的OnMenuItemClickListener(){
@凌驾
公共布尔onMenuItemClick(菜单项){
开关(item.getItemId()){
案例R.id.Home:
意向a=新意向(项目加速本、设计活动类);
星触觉(a);
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
Intent upIntent = NavUtils.getParentActivityIntent(this);
if (NavUtils.shouldUpRecreateTask(this, upIntent)) {
TaskStackBuilder.create(this).addNextIntentWithParentStack(upIntent).startActivities();
} else {
upIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(upIntent);
}
return true;
}
return super.onOptionsItemSelected(item);
}