Android fragments 当我在android应用程序中通过调用startActivity从一个活动切换到另一个活动时,会出现一个空白屏幕
我的第二个活动是FragmentActivity,在这里我放置了一个FragmentStart\u视图。在FragmentStart_视图的onCreateView函数中,我动态地在tablelayout中放置了近100行。据我所说,这需要时间来准备,这就是为什么会出现空白屏幕,请建议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
这是我调用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(“日期”);