Android fragments 当我在android应用程序中通过调用startActivity从一个活动切换到另一个活动时,会出现一个空白屏幕

Android fragments 当我在android应用程序中通过调用startActivity从一个活动切换到另一个活动时,会出现一个空白屏幕,android-fragments,android-activity,Android Fragments,Android Activity,我的第二个活动是FragmentActivity,在这里我放置了一个FragmentStart\u视图。在FragmentStart_视图的onCreateView函数中,我动态地在tablelayout中放置了近100行。据我所说,这需要时间来准备,这就是为什么会出现空白屏幕,请建议 这是我调用ShowDataTask的onCreateView函数代码。此代码出现在start_视图片段中。这是从第二个活动调用的。就在应用程序启动之后 @Override public View onCreat

我的第二个活动是FragmentActivity,在这里我放置了一个FragmentStart\u视图。在FragmentStart_视图的onCreateView函数中,我动态地在tablelayout中放置了近100行。据我所说,这需要时间来准备,这就是为什么会出现空白屏幕,请建议


这是我调用ShowDataTask的onCreateView函数代码。此代码出现在start_视图片段中。这是从第二个活动调用的。就在应用程序启动之后

@Override 
public View onCreateView(LayoutInflater inflater,  
 ViewGroup container, Bundle savedInstanceState) {  
    //activity=getActivity();
    View view=null;
    Cursor cr=null;
    view=inflater.inflate( R.layout.activity_start__view, container, false);
    new ShowDataTask(this,view).execute(null,null,null);
    return view;  
}
它的showDataTask代码,我在其中调用showDataInTable函数

class ShowDataTask extends AsyncTask<String, String, String> {
Start_View start_View;
View view;
Context context;
SimpleDateFormat smf=new SimpleDateFormat("dd-MM-yyyy",Locale.US);
ProgressDialog dialog;
 String select_query="select Date from SmsRead";
 public ShowDataTask(Start_View stv,View v) {
    view=v;
    start_View=stv;
    context=start_View.getActivity();
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
    dialog = new ProgressDialog(context);

    dialog.setCancelable(false);
    dialog.getWindow().setGravity(Gravity.TOP);
    WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
    wmlp.y = 100;
    dialog.getWindow().setAttributes(wmlp);
    //dialog.setProgressStyle(ProgressDialog.THEME_HOLO_DARK);
    dialog.setIndeterminate(true);
    dialog.setTitle("Prepating View");
    dialog.setMessage("Wait For a While...");
    dialog.show();

}

@Override
protected String doInBackground(String... date) {

    try{
        start_View.showDataInTable(view);

    }catch(Exception ex){
        //Log.e("<<<<path>>>>>>", getDatabasePath("ReadSms.db").toString());
        ex.printStackTrace();
        Log.e("Exception", ex.toString());
    }

    return "dd";
}


@Override
protected void onPostExecute(String result) {           
   // dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
    //progressBar.setVisibility(View.INVISIBLE);
        dialog.dismiss();
}
class ShowDataTask扩展了AsyncTask{
启动视图启动视图;
视图;
语境;
SimpleDataFormat smf=新的SimpleDataFormat(“dd-MM-yyyy”,Locale.US);
进程对话;
String select\u query=“从SmsRead选择日期”;
公共ShowDataTask(启动视图stv,视图v){
视图=v;
启动视图=stv;
context=start_View.getActivity();
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
dialog=新建进度对话框(上下文);
对话框。可设置可取消(false);
dialog.getWindow().setGravity(Gravity.TOP);
WindowManager.LayoutParams wmlp=dialog.getWindow().getAttributes();
wmlp.y=100;
dialog.getWindow().setAttributes(wmlp);
//setProgressStyle(ProgressDialog.THEME_HOLO_DARK);
对话框。setUndeterminate(true);
对话框.setTitle(“准备视图”);
setMessage(“等待一段时间…”);
dialog.show();
}
@凌驾
受保护字符串doInBackground(字符串…日期){
试一试{
启动视图。showDataInTable(视图);
}捕获(例外情况除外){
//Log.e(“>>”,getDatabasePath(“ReadSms.db”).toString();
例如printStackTrace();
Log.e(“异常”,例如toString());
}
返回“dd”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//dismissDialog(对话框下载进度);
//progressBar.setVisibility(View.INVISIBLE);
dialog.dismise();
}
}

以及我动态准备Tablelayout的ShowDataInTable代码

public void showDataInTable(View view){
    Cursor cr=null;
    db=new Database(getActivity());
    SQLiteDatabase db1 = db.getWritableDatabase();
    try{
        TextView txt=(TextView)view.findViewById(R.id.testtext);
        TableLayout ll=(TableLayout) view.findViewById(R.id.tablelayout1);
        TableRow trow;
        TextView tv1;
        TextView tv2;
        TextView tv3;
        TextView tv4;
        TextView tv;

        String st="select * from MainTableRead order by Date desc";
        String Previous_month="";
        cr=db1.rawQuery(st,null);
        String date1="";
        if(cr.moveToFirst()){
             String month="";
            do{         

                String address=cr.getString(0);
                String Received=cr.getString(2);
                String body=cr.getString(3);
                long milliseconds=Long.valueOf(Received);
                Calendar calendar = Calendar.getInstance();
                calendar.setTimeInMillis(milliseconds);
                 date1= smf.format(calendar.getTime());
                 String date[]=date1.split("-");
                 month=getMonth(date[1]);
                 String year=date[2];
                String amt="";String bal="";
                String Result= Parse.parseData(body,address);
                String amt_Bal[]=Result.split("#");
                if(amt_Bal.length>1){
                    amt=amt_Bal[0];bal=amt_Bal[1];

                }

                if(amt!=null && bal!=null && !amt.equals("") && !bal.equals("")){ 

                    if(!Previous_month.equalsIgnoreCase(month)){
                        if(!Previous_month.equals("") && (month_credit!=0 || month_debit!=0)){
                            //credit debit row
                            TableRow trow3=new TableRow(getActivity());
                            trow3.setBackgroundResource(R.color.pink);
                            TextView tv6=new TextView(getActivity());
                            TextView tv7=new TextView(getActivity());
                            tv6.setText("C: "+month_credit);tv7.setText("D :"+month_debit);
                            trow3.addView(tv6);trow3.addView(tv7);
                            ll.addView(trow3);
                        }
                    TableRow trow2=new TableRow(getActivity());
                    trow2.setClickable(true);
                    trow2.setOnLongClickListener(this);

                    trow2.setBackgroundResource(R.color.yellow);
                    month_credit=0;month_debit=0;
                    TextView tv5=new TextView(getActivity());
                    TextView tv6=new TextView(getActivity());
                    TextView tv7=new TextView(getActivity());
                    TextView tv8=new TextView(getActivity());
                    TextView tv9=new TextView(getActivity());
                    tv5.setPadding(6,2,6,2);tv6.setPadding(6,2,6,2);tv7.setPadding(6,2,6,2);tv8.setPadding(6,2,6,2);
                    tv5.setText(""+month+" "+year); tv6.setText(""); tv7.setText(""); tv8.setText("");tv9.setText("");
                    trow2.addView(tv5); trow2.addView(tv6); trow2.addView(tv7); trow2.addView(tv8);trow2.addView(tv9);
                    ll.addView(trow2);

                    trow=new TableRow(getActivity()); 
                    trow.setClickable(true);
                    trow.setMinimumWidth(10);
                    trow.setBackgroundResource(R.color.yellow);
                    tv1=new TextView(getActivity());
                    tv2=new TextView(getActivity());
                    tv3=new TextView(getActivity());
                    tv4=new TextView(getActivity());
                    TextView tv10=new TextView(getActivity());
                    tv1.setText("Address"); tv2.setText(" Balance"); tv3.setText(" Amount"); tv4.setText(" Date");tv10.setText("");
                    trow.addView(tv1); trow.addView(tv2); trow.addView(tv3);trow.addView(tv4);
                    ll.addView(trow);
                    Previous_month=month;

                }
                    trow=new TableRow(getActivity());
                    trow.setClickable(true);
                    trow.setId(30);
                    trow.setBackgroundResource(R.color.pink);
                    tv1=new TextView(getActivity());tv2=new TextView(getActivity());tv3=new TextView(getActivity());
                    tv4=new TextView(getActivity());tv=new TextView(getActivity());tv.setWidth(0);tv.setHeight(0);
                    tv1.setPadding(6,2,6,2);tv2.setPadding(6,2,6,2);tv3.setPadding(6,2,6,2);tv4.setPadding(6,2,6,2);
                    tv1.setText(""+address);tv2.setText(" "+amt);tv3.setText(" "+bal);tv4.setText(" "+date1);
                    tv.setText(""+body);tv.setVisibility(View.INVISIBLE);
                    trow.addView(tv1); trow.addView(tv2); trow.addView(tv3);trow.addView(tv4);trow.addView(tv);
                    amt=amt.trim().replace(",","");
                    if(amt.contains("-")){
                        month_debit=month_debit+Double.valueOf(amt);
                        month_debit=Math.floor(month_debit*100)/100;
                        Log.e("month_debit", ""+month_debit);
                    }
                    else if(amt.contains("+")){
                        month_credit=month_credit+Double.valueOf(amt);
                        month_credit=Math.floor(month_credit*100)/100;
                    }

                    trow.setOnClickListener(this);
                    trow.setOnLongClickListener(this);
                    ll.addView(trow);

                }

            }while(cr.moveToNext());

            if(month_credit!=0 || month_debit!=0){
                TableRow trow3=new TableRow(getActivity());TableRow trow4=new TableRow(getActivity());
                trow4.setPadding(0, 2, 2, 50);
                trow3.setBackgroundResource(R.color.pink);
                TextView tv6=new TextView(getActivity());TextView tv7=new TextView(getActivity());
                tv6.setText("C: "+month_credit);tv7.setText("D :"+month_debit);
                tv6.setBackgroundResource(R.color.pink);tv7.setBackgroundResource(R.color.pink);
                trow3.addView(tv6);trow3.addView(tv7);
                ll.addView(trow3);ll.addView(trow4);
                ll.getChildAt(0);

            }

        }

        cr.close();
        db1.close();
        db.close();
        Log.d("<<<<<<<sms Read>>>>>>>>>","fffffff");
    }catch(Exception ex){
        Log.e("Exception inside stasrt view in row creation", ex.toString());
        cr.close();
        db.close();
        db1.close();
        ex.printStackTrace();

    }
public void showDataInTable(视图){
游标cr=null;
db=新数据库(getActivity());
SQLiteDatabase db1=db.getWritableDatabase();
试一试{
TextView txt=(TextView)view.findViewById(R.id.testtext);
TableLayout ll=(TableLayout)view.findviewbyd(R.id.tablelayout1);
TableRow-trow;
文本视图tv1;
文本视图tv2;
文本视图tv3;
文本视图tv4;
文本视图电视;
String st=“从主表中选择*按日期说明读取订单”;
字符串“上一个月=”;
cr=db1.rawQuery(st,null);
字符串date1=“”;
if(cr.moveToFirst()){
字符串月份=”;
做{
字符串地址=cr.getString(0);
接收到的字符串=cr.getString(2);
字符串体=cr.getString(3);
长毫秒=长.valueOf(已接收);
日历=Calendar.getInstance();
calendar.setTimeInMillis(毫秒);
date1=smf.format(calendar.getTime());
字符串date[]=date1.split(“-”);
月=getMonth(日期[1]);
字符串年份=日期[2];
字符串金额=”;字符串余额=”;
字符串结果=Parse.parseData(正文、地址);
字符串amt_Bal[]=Result.split(“#”);
如果(金额平衡长度>1){
金额=金额余额[0];余额=金额余额[1];
}
如果(金额!=null&&bal!=null&&bal!=amt.equals(“”)&&bal.equals(“”){
如果(!上一个月。相等信号情况(月)){
如果(!上个月等于(“”&(月贷记!=0 |月贷记!=0)){
//借贷行
TableRow trow3=新的TableRow(getActivity());
trow3.setBackgroundResource(R.color.pink);
TextView tv6=新的TextView(getActivity());
TextView tv7=新的TextView(getActivity());
tv6.setText(“C:+月贷记”);tv7.setText(“D:+月贷记”);
trow3.addView(tv6);trow3.addView(tv7);
ll.addView(trow3);
}
TableRow trow2=新的TableRow(getActivity());
trow2.可设置可点击(真);
trow2.setOnLongClickListener(这个);
trow2.挫折地资源(R.颜色.黄色);
月贷记=0;月贷记=0;
TextView tv5=新的TextView(getActivity());
TextView tv6=新的TextView(getActivity());
TextView tv7=新的TextView(getActivity());
TextView tv8=新的TextView(getActivity());
TextView tv9=新的TextView(getActivity());
tv5.设置填充(6,2,6,2);tv6.设置填充(6,2,6,2);tv7.设置填充(6,2,6,2);tv8.设置填充(6,2,6,2);
tv5.setText(“+月+”+年);tv6.setText(“”);tv7.setText(“”);tv8.setText(“”);tv9.setText(“”);
trow2.addView(tv5);trow2.addView(tv6);trow2.addView(tv7);trow2.addView(tv8);trow2.addView(tv9);
ll.addView(trow2);
trow=新表行(getActivity());
trow.可设置可点击(真);
设置最小宽度(10);
落叶松资源(R.color.yellow);
tv1=新文本视图(getActivity());
tv2=新文本视图(getActivity());
tv3=新文本视图(getActivity());
tv4=新文本视图(getActivity());
TextView tv10=新的TextView(getActivity());
tv1.setText(“地址”);tv2.setText(“余额”);tv3.setText(“金额”);tv4.setText(“日期”);tv10.setText(“日期”);