First post, so please go easy.
I have an app with a handful of tabs, the first is opened on running the app.
One of the tabs is ‘My Account’ (a ListActivity) showing account options. I switch to this and if the user is not logged in, it, in turn, runs a UserLogon activity using the following:
Intent logonActivity = new Intent(getBaseContext(), UserLogon.class);
startActivityForResult(logonActivity, 0);
To catch the result, I use the following code:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 0){
MainBlock ta = (MainBlock) this.getParent();
TabHost th = ta.getMyTabHost();
th.setCurrentTab(0);
finish();
}
if (requestCode == 100)
{
showAccountOptions();
}
}
In the UserLogon class, I have the usual fare; TextView’s and Button’s. The intention is that if the user cancels the login, it will revert to the initial tab, or if login is successful, it will show the Account Options. And this is indeed what does happen.
All good so far.
The problem I’m having is that if I cancel the login and return to the first tab, when I select the Accounts tab again, I’m not presented with the UserLogon activity. I was under the impression that finish() would close the UserLogon activity, and the Accounts activity but it would appear not.
So, my question is simply, how do I, in effect, restart the Accounts activity so that the user would be presented with the option to login once more.
We’re good people and all willing to help 😉 I’ll give it a shot. Still, I’m not quite sure I get that all right.
Basically you have an TabActivity which you setup and where you do something like that:
You’re basically saying that the first Activity start of UserLogon works, but the second one doesn’t, right? Did you debugged to that point to check whether you reach the code which starts the activity again?
Update based on comment
Your
UserLogonshould always provide a result information, here’s a blueprint:The parent activity which is waiting for the result should do it like that: