[英]Android app shows white screen when twice to exit
I m new to android. 我是android新手。 I am create simple app.
我正在创建简单的应用程序。 In my home Screeen that have Viewpager & tabstrip with 2 fragment.
在我家的Screeen中,有Viewpager和带有2个片段的Tabstrip。 In each fragment has a listview.
在每个片段中都有一个列表视图。
The problem is that when press back button 2 times then shows the white screen, and In the white screen press 1 time more back button for exit. 问题在于,当按下返回按钮2次后,将显示白色屏幕,而在白色屏幕中,再按1次返回按钮即可退出。
I don't know where is my mistake. 我不知道我的错误在哪里。
Activity Code is give below. 活动代码如下。
package com.example.view;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TextView;
import com.astuetz.PagerSlidingTabStrip;
import com.example.adapter.ViewPagerAdapter;
import com.example.cardholder.BaseActivity;
import com.example.cardholder.R;
import com.example.service.DownloadService;
import com.example.service.UploadService;
public class HomeActivity extends BaseActivity implements OnPageChangeListener {
Toolbar toolbar;
// TextView _TextViewToolbar;
ViewPager pager;
ViewPagerAdapter adapter;
CharSequence Titles[] = { "Card Holder", "Contacts" };
int Numboftabs = 2;
private Boolean exit = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home_activity);
toolbar = (Toolbar) findViewById(R.id.toolbar);
// _TextViewToolbar = (TextView)
// toolbar.findViewById(R.id.toolbar_title);
setSupportActionBar(toolbar);
adapter = new ViewPagerAdapter(getSupportFragmentManager(), Titles,
Numboftabs);
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
pager.setOnPageChangeListener(this);
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.setViewPager(pager);
// tabs.setShouldExpand(true);
tabs.setDividerPadding(2);
tabs.setDividerColor(getResources().getColor(R.color.colorPrimary));
tabs.setTextColor(Color.WHITE);
tabs.setIndicatorHeight(4);
tabs.setIndicatorColor(Color.WHITE);
// tabs.setIndicatorColor(getResources().getColor(R.color.colorPrimaryDark));
}
private void logOut() {
logOutSharedPreference();
Intent intent = new Intent(HomeActivity.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
}
@Override
public void onBackPressed() {
if (exit) {
super.onBackPressed();
} else {
showToast(HomeActivity.this, "Press Back again to Exit.");
this.exit = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
exit = false;
}
}, 2000);
}
/*AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.AppCompatAlertDialogStyleMsgAlert);
builder.setMessage("Are You Sure Want To Close ? ");
builder.setCancelable(true);
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
HomeActivity.this.finish();
}
});
builder.show();*/
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.account_setting:
Intent _IntentAccountSetting = new Intent(HomeActivity.this,
AccountSettingActivity.class);
startActivity(_IntentAccountSetting);
break;
case R.id.logout:
logOut();
HomeActivity.this.finish();
break;
case R.id.upload:
if (!isInternetConnect()) {
AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.AppCompatAlertDialogStyleMsgAlert);
builder.setMessage("Required Internet Connection.");
builder.setCancelable(true);
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
// continue with delete
}
});
builder.show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.AppCompatAlertDialogStyleMsgAlert);
builder.setMessage("Are You Sure Want To Upload Data From "
+ getEmail(HomeActivity.this) + " ?");
builder.setCancelable(true);
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Intent i1 = new Intent(HomeActivity.this,
UploadService.class);
startService(i1);
}
});
builder.setNegativeButton("CANCLE",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
builder.show();
}
break;
case R.id.download:
if (!isInternetConnect()) {
AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.AppCompatAlertDialogStyleMsgAlert);
builder.setMessage("Required Internet Connection.");
builder.setCancelable(true);
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
builder.show();
} else {
AlertDialog.Builder builder = new AlertDialog.Builder(this,
R.style.AppCompatAlertDialogStyleMsgAlert);
builder.setMessage("Are You Sure Want To Download Data From "
+ getEmail(HomeActivity.this) + " ?");
builder.setCancelable(true);
builder.setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Intent i1 = new Intent(HomeActivity.this,
DownloadService.class);
startService(i1);
}
});
builder.setNegativeButton("CANCLE",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
dialog.dismiss();
}
});
builder.show();
}
break;
case R.id.delete_cardholder:
Intent _IntentDeleteActivity = new Intent(HomeActivity.this,CardHoderDeleteActivity.class);
startActivity(_IntentDeleteActivity);
default:
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageSelected(int position) {
// TODO Auto-generated method stub
setTitle(adapter.getPageTitle(position));
}
}
The problem in your code is this: 您的代码中的问题是这样的:
@Override
public void onBackPressed() {
if (exit) {
super.onBackPressed();
} else {
showToast(HomeActivity.this, "Press Back again to Exit.");
this.exit = true;
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
exit = false;
}
}, 2000);
}
When you press back the first time, exit is false so super.onBackPressed is not called. 第一次按下时,退出为false,因此不会调用super.onBackPressed。
Just replace this code to: 只需将此代码替换为:
@Override
public void onBackPressed() {
super.onBackPressed();
//finish();
}
or remove the method if you are not getting any event on back press and just want to finish the activity. 或取消方法,如果您没有在按下时收到任何事件,而只想完成该活动。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.