我有一个带有一些选项卡的TabActivity,用于用户输入。当用户完成输入并按下保存按钮时,我将继续进行数据保存。这是通过在每个活动中调用方法startDataTravershal()来完成的。我想在按下按钮时显示一个progressDialog,并在数据保存完成后将其关闭。然而,无论我做什么,progressDialog都没有显示出来。
我的代码:
public class HandHoldingTabUI extends TabActivity {
TabHost TabHostWindow;
TabSpec TabEntry;
TabSpec TabRectification;
TabSpec TabG26;
TabSpec TabU26;
TabSpec TabG27;
TabSpec TabBudget;
TabSpec TabBDC;
TabSpec TabTradeL;
TabSpec TabIncomeC;
TabSpec TabPCC;
TabSpec TabTAR;
TabSpec TabPNTA;
TabSpec TabPaperless;
TabSpec TabOthers;
Button btnSaveData = null;
ProgressDialog progressDialog = null;
public static HandHoldingTabUI context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.handholding_tab_ui);
context=this;
UserDataHelper helper = new UserDataHelper(HandHoldingTabUI.this);
helper.deleteData("delete from "+UserDataHelper.tableMentorSurveyData);
helper.close();
init();
}
private void init() {
btnSaveData = (Button) findViewById(R.id.btnSaveData);
btnSaveData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDialog = ProgressDialog.show(HandHoldingTabUI.this, "",
"Loading. Please wait...");
HandHoldingTabUI.this.runOnUiThread(new Runnable() {
@Override
public void run() {
saveData();
progressDialog.dismiss();
}
});
}
});
TabHostWindow = (TabHost)findViewById(android.R.id.tabhost);
createTab(TabEntry,"Entry","Entry", Entry.class); //Entry
createTab(TabRectification,"Rectification","Rectification", Rectification.class); // Rectification
createTab(TabG26,"Generation of form 26","Generation of form 26", G26.class); //Generation of form 26
createTab(TabU26,"Uploading of form 26","Uploading of form 26", U26.class); //Uploading of form 26
createTab(TabG27,"Generation of form 27","Generation of form 27", G27.class); //Generation of form 27
createTab(TabBudget,"Budget (Form 36)","Budget (Form 36)", Budget.class); //Budget (Form 36)
createTab(TabBDC,"Birth and Death Certificate","Birth and Death Certificate", BDC.class); //Birth and Death Certificate
createTab(TabTradeL,"Trade license","Trade license", TradeL.class); //Trade license
createTab(TabIncomeC,"Income Certificate","Income Certificate", IncomeC.class); //Income Certificate
createTab(TabPCC,"Provisional Caste Certificate","Provisional Caste Certificate", PCC.class); //Provisional Caste Certificate
createTab(TabTAR,"Tax Assessment Register","Tax Assessment Register", TAR.class); //Tax Assessment Register
createTab(TabPNTA,"Preparation of Non-tax Assessment","Preparation of Non-tax Assessment", PNTA.class); //Preparation of Non-tax Assessment
createTab(TabPaperless,"Paperless","Paperless", PaperLess.class); //Paperless
createTab(TabOthers,"Others","Others", Others.class); //Others
setUpCommonData();
}
private void setUpCommonData() {
SharedPreferences prefs = getSharedPreferences("Preferences", Context.MODE_PRIVATE);
HandholdingCommonData.gpCode = getIntent().getStringExtra("gpCode");
HandholdingCommonData.userId = prefs.getString("userCode",null);
HandholdingCommonData.userGroup = prefs.getString("userGroup",null);
HandholdingCommonData.userChekInTime = prefs.getString("checkInTime",null);
HandholdingCommonData.userFileId = HandholdingCommonData.userId + "_"+HandholdingCommonData.userChekInTime;
}
private void createTab(TabSpec TabMenu,String TabName,String TabIndicator,Class TabActivity){
TabMenu = TabHostWindow.newTabSpec(TabName);
TabMenu.setIndicator(TabIndicator);
TabMenu.setContent(new Intent(this,TabActivity));
TabHostWindow.addTab(TabMenu);
}
private void saveData() {
UserDataHelper helper = new UserDataHelper(HandHoldingTabUI.this);
helper.deleteData("delete from "+UserDataHelper.tableMentorSurveyData);
helper.close();
for(int i = 0; i<getTabHost().getTabWidget().getTabCount(); i++) {
getTabHost().setCurrentTab(i);
Activity myActivity = this.getCurrentActivity();
if(myActivity instanceof Entry) {
Entry obj = (Entry) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof BDC) {
BDC obj = (BDC) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof Budget) {
Budget obj = (Budget) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof G26) {
G26 obj = (G26) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof G27) {
G27 obj = (G27) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof IncomeC) {
IncomeC obj = (IncomeC) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof Others) {
Others obj = (Others) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof PaperLess) {
PaperLess obj = (PaperLess) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof PCC) {
PCC obj = (PCC) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof PNTA) {
PNTA obj = (PNTA) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof Rectification) {
Rectification obj = (Rectification) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof TAR) {
TAR obj = (TAR) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof TradeL) {
TradeL obj = (TradeL) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof U26) {
U26 obj = (U26) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
}
proceedToShowDraft();
}
private void proceedToShowDraft() {
Intent intent = new Intent();
intent.setClass(HandHoldingTabUI.this,DraftUi.class);
intent.putExtra("gpCode",HandholdingCommonData.gpCode);
intent.putExtra("userGroup",HandholdingCommonData.userGroup);
intent.putExtra("userId",HandholdingCommonData.userId);
intent.putExtra("userFileId",HandholdingCommonData.userFileId);
startActivity(intent);
HandHoldingTabUI.this.finish();
}
}我尝试过这些解决办法,但它们没有帮助:
Progress Dialog in Tab Layout in android
Show a progress dialog in android tab layout
android how to put progressdialog in TabActivity
我非常感谢在这个问题上提供任何帮助。
谢谢,致以最诚挚的问候。
编辑:根据评论,我试图这样做:-
AsyncTask task = new AsyncTask() {
@Override
protected Object doInBackground(Object[] params) {
progressDialog = ProgressDialog.show(HandHoldingTabUI.this, "",
"Loading. Please wait...");
saveData();
return null;
}
@Override
protected void onPostExecute(Object o) {
progressDialog.dismiss();
proceedToShowDraft();
}
};这是在按钮的onClick()上写的。但现在,当我点击按钮时,什么都不会发生。
发布于 2016-11-01 09:18:44
请尝试更改您的onClick()方法如下:
@Override
public void onClick(View v) {
progressDialog = ProgressDialog.show(HandHoldingTabUI.this, "",
"Loading. Please wait...");
new Thread(new Runnable() {
@Override
public void run() {
saveData_1();
HandHoldingTabUI.this.runOnUiThread(new Runnable() {
@Override
public void run() {
saveData_2();
progressDialog.dismiss();
}
});
}
}).start();
}
...
private void saveData_1() {
UserDataHelper helper = new UserDataHelper(HandHoldingTabUI.this);
helper.deleteData("delete from "+UserDataHelper.tableMentorSurveyData);
helper.close();
}
private void saveData_2() {
for(int i = 0; i<getTabHost().getTabWidget().getTabCount(); i++) {
getTabHost().setCurrentTab(i);
Activity myActivity = this.getCurrentActivity();
if(myActivity instanceof Entry) {
Entry obj = (Entry) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof BDC) {
BDC obj = (BDC) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof Budget) {
Budget obj = (Budget) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof G26) {
G26 obj = (G26) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof G27) {
G27 obj = (G27) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof IncomeC) {
IncomeC obj = (IncomeC) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof Others) {
Others obj = (Others) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof PaperLess) {
PaperLess obj = (PaperLess) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof PCC) {
PCC obj = (PCC) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof PNTA) {
PNTA obj = (PNTA) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof Rectification) {
Rectification obj = (Rectification) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof TAR) {
TAR obj = (TAR) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof TradeL) {
TradeL obj = (TradeL) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
if(myActivity instanceof U26) {
U26 obj = (U26) myActivity;
obj.category = "Handholding Support";
obj.startDataTravershal();
}
}
proceedToShowDraft();
}请注意,在执行后台线程时,您应该考虑活动完成时应该发生的事情。
https://stackoverflow.com/questions/40355765
复制相似问题