Android 从列表视图移动到其他活动时,列表视图将消失
我面临一些奇怪的问题,当我从Android 从列表视图移动到其他活动时,列表视图将消失,android,android-listview,android-activity,Android,Android Listview,Android Activity,我面临一些奇怪的问题,当我从Activity 1移动到Activity 2列表视图时,活动1中的列表视图会自动消失要再次查看列表视图,我需要再次启动Activity 1 我将从活动1列表视图中的按钮转到活动2 我不理解这种行为,我也不确定问题和解决方案 代码如下: 活动1: public class stockmanager extends Activity{ String getentry; private int storeID=0; //Database
Activity 1
移动到Activity 2
列表视图时,活动1中的列表视图会自动消失要再次查看列表视图,我需要再次启动Activity 1
我将从活动1列表视图中的按钮
转到活动2
我不理解这种行为,我也不确定问题和解决方案
代码如下:
活动1:
public class stockmanager extends Activity{
String getentry;
private int storeID=0;
//Database d;
StockTable st;
StockList sl;
Database d;
private String getstocks;
public Cursor a1;
Intent bd;
Intent sd;
String s,AllStocks;
private String deletestock_sl,deletestock_st;
TextView displaystocks;
ListView popstocks;
poplist populatestocks;
int stockid;
Cursor getid;
static class ViewHolder {
CheckBox cb;
Button view1;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.stockmanager);
d=new Database(getApplicationContext());
st=new StockTable(getApplicationContext());
sl=new StockList(getApplicationContext());
new Dboperation().execute();
}
public class poplist extends CursorAdapter{
public poplist(Context context, Cursor c) {
super(context, c);
// TODO Auto-generated constructor stub
}
@Override
public void bindView(View view, Context context, Cursor c) {
// TODO Auto-generated method stub
final ViewHolder myviewholder=new ViewHolder();
myviewholder.cb=(CheckBox) view.findViewById(R.id.checkBox1);
myviewholder.view1=(Button) view.findViewById(R.id.button1);
myviewholder.cb.setText(c.getString(c.getColumnIndexOrThrow(sl.Column2)));
myviewholder.cb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(myviewholder.cb.isChecked())
{
a.add((String) myviewholder.cb.getText());
}
}
});
myviewholder.view1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
sd=new Intent(v.getContext(),Detail.class);
sd.putExtra("StockName", myviewholder.cb.getText());
startActivity(sd); //Activity 2 triggered here
}
});
}
@Override
public View newView(Context context, Cursor c, ViewGroup parent) {
// TODO Auto-generated method stub
LayoutInflater inflater = LayoutInflater.from(context);
View v = inflater.inflate(R.layout.stocklist, parent, false);
bindView(v, context, c);
return v;
// return null;
}
}
private class Dboperation extends AsyncTask<Void, Void, Cursor>{
ProgressDialog pd;
@Override
protected Cursor doInBackground(Void... params) {
// TODO Auto-generated method stub
a1=Database.getInstance(getApplicationContext()).getWritableDatabase().rawQuery(sl.getstocks, null);
return a1;
}
protected void onPostExecute(Cursor result) {
if(a1.moveToNext())
{
displaystocks.setVisibility(View.INVISIBLE);
}
else
{
displaystocks.setVisibility(View.VISIBLE);
}
//System.out.println("Entered onpostexecute");
final poplist populatestocks=new poplist(getApplicationContext(),a1) ;
popstocks.setAdapter(populatestocks);
if(pd!=null)
pd.dismiss();
}
@Override
protected void onPreExecute() {
pd=new ProgressDialog(stockmanager.this);
pd.setMessage("Please wait.... Loading Data");
pd.show();
}
protected void onProgressUpdate(Void... values) {
}
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if(a1!=null){
a1.close();
}
if(Database.getInstance(getApplicationContext())!=null){
Database.getInstance(getApplicationContext()).close();
}
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
if(a1!=null){
a1.close();
}
if(Database.getInstance(getApplicationContext())!=null){
Database.getInstance(getApplicationContext()).close();
}
}
}
公共类stockmanager扩展活动{
字符串getentry;
私有int storeID=0;
//数据库d;
斯托克表街;
股票列表sl;
数据库d;
私人股票;
公共光标a1;
意向bd;
意向sd;
字符串s,所有股票;
私有字符串deletestock,deletestock;
文本视图显示股票;
ListView流行股票;
poplistpopulatestocks;
int-stockid;
光标getid;
静态类视窗夹{
复选框cb;
按钮视图1;
}
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.stockmanager);
d=新数据库(getApplicationContext());
st=新股票表(getApplicationContext());
sl=新股票列表(getApplicationContext());
新建Dboperation().execute();
}
公共类poplist扩展了CursorAdapter{
公共poplist(上下文,游标c){
超级(上下文,c);
//TODO自动生成的构造函数存根
}
@凌驾
public void bindView(视图、上下文、光标c){
//TODO自动生成的方法存根
最终视图持有者myviewholder=新视图持有者();
myviewholder.cb=(复选框)view.findviewbyd(R.id.checkBox1);
myviewholder.view1=(按钮)view.findViewById(R.id.button1);
myviewholder.cb.setText(c.getString(c.getColumnIndexOrThrow(sl.Column2));
myviewholder.cb.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
if(myviewholder.cb.isChecked())
{
a、 添加((字符串)myviewholder.cb.getText());
}
}
});
myviewholder.view1.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
sd=新意图(v.getContext(),Detail.class);
sd.putExtra(“StockName”,myviewholder.cb.getText());
startActivity(sd);//此处触发活动2
}
});
}
@凌驾
公共视图newView(上下文上下文、光标c、视图组父对象){
//TODO自动生成的方法存根
LayoutFlater充气机=LayoutFlater.from(上下文);
视图v=充气机。充气(R.layout.stocklist,父项,false);
bindView(v,context,c);
返回v;
//返回null;
}
}
私有类Dboperation扩展了异步任务{
进展性帕金森病;
@凌驾
受保护的游标doInBackground(无效…参数){
//TODO自动生成的方法存根
a1=Database.getInstance(getApplicationContext()).getWritableDatabase().rawQuery(sl.getstocks,null);
返回a1;
}
受保护的void onPostExecute(游标结果){
if(a1.moveToNext())
{
displaystocks.setVisibility(View.INVISIBLE);
}
其他的
{
displaystocks.setVisibility(View.VISIBLE);
}
//System.out.println(“在后期执行时输入”);
最终poplist populatestocks=新的poplist(getApplicationContext(),a1);
setAdapter(populatestocks);
如果(pd!=null)
pd.解散();
}
@凌驾
受保护的void onPreExecute(){
pd=新进度对话框(stockmanager.this);
pd.setMessage(“请稍候……正在加载数据”);
pd.show();
}
受保护的void onProgressUpdate(void…值){
}
}
@凌驾
受保护的空onDestroy(){
//TODO自动生成的方法存根
super.ondestory();
如果(a1!=null){
a1.关闭();
}
if(Database.getInstance(getApplicationContext())!=null){
Database.getInstance(getApplicationContext()).close();
}
}
@凌驾
受保护的void onPause(){
//TODO自动生成的方法存根
super.onPause();
如果(a1!=null){
a1.关闭();
}
if(Database.getInstance(getApplicationContext())!=null){
Database.getInstance(getApplicationContext()).close();
}
}
}
这是预期的行为。在这种情况下,您应该得到帮助。这个链接应该告诉你所有你需要知道的关于你为什么会看到这种行为的信息
虽然用户可以同时看到两个活动,但我很少看到使用片段以外的任何东西来完成这项工作,我一般不推荐这样做。如果您希望在单击按钮时弹出一个显示新数据的窗口,那么您可能应该使用类似于切换其可见性的布局或对话框之类的工具。