【问题标题】:List view disappears on moving to another activity from list view从列表视图移动到另一个活动时,列表视图消失
【发布时间】:2014-05-14 15:14:20
【问题描述】:

我遇到了一些奇怪的问题,当我从 Activity 1 移动到活动 1 中的 Activity 2 列表视图时,会自动消失再次查看列表视图,我需要再次启动 @987654323 @。

我将在活动 1 的列表视图中从 button 转到活动 2。

我不理解这种行为,我也不确定问题和解决方案。

代码如下:

活动一:

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();
        }
}
}

【问题讨论】:

    标签: android android-listview android-activity


    【解决方案1】:

    这是预期的行为。在这种情况下,Documentation for Activity 应该可以帮助您。这个链接应该告诉你所有你需要知道的关于你为什么会看到这种行为的信息。

    虽然可以让用户同时看到两个活动,但我很少看到使用除 Fragments 之外的任何东西来完成此操作,我一般不推荐它。如果您想要在单击按钮时弹出一个显示新数据的窗口,那么您可能应该改用诸如切换其可见性的布局之类的东西,或者可能是对话框。

    【讨论】:

    • 感谢您的回复......如果这是正常行为......那么我可以再次在onResume 中致电ASync task。这是建议的方法吗..
    猜你喜欢
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多