right i have a sign in button located exactly in the same place on every activity and i have bout 20 activities at the moment but will rise a lot higher soon, and i don't really want to be copying and pasting the same code in to each activity, so I'm looking for a simple, efficient solution to handle the onClick event which will work globally throughout the app.
For example, if User A clicks on the sign in button on Activity 1 and signs in, it will show that he is signed in on Activity 2 and 3 and so on.. until they log out.
The sign in button has the same ID throughout the whole application which is "@+id/signIn"
Would it be easier to call a single function at the beginning of each activity? I thought that wouldn't be every effective use of processing power etc?!
Any suggestions and/or guidance would be much appreciated. Thank you :)
Using an OnClickListener Inside your Activity instance's onCreate() method you need to first find your Button by it's id using findViewById() and then set an OnClickListener for your button and implement the onClick() method so that it starts your new Activity .
Yes you can! I had multiple activities inflate the same layout but they save different shared preferences. @Override protected void onCreate(Bundle savedInstanceState) { super. onCreate(savedInstanceState); setContentView(R.
Human multitasking is the concept that one can split their attention on more than one task or activity at the same time, such as speaking on the phone while driving a car. Multitasking can result in time wasted due to human context switching and becoming prone to errors due to insufficient attention.
You can't avoid implementing that listener in all of your activities in either ways. But you can do it in a bit more organized way:
You could write a custom header layout for your application (/res/layout/header.xml
), in which you have the "Sign In" button with a click listener set (pointing to an onSignInClicked
method):
android:onClick="onSignInClicked"
Then you include this header to each activity layout:
<include android:id="@+id/header" layout="@layout/header" />
You could also create an interface which contains an onSignInClicked
method declaration, and by all your activities implementing that interface you force them to define the onSignInClicked
method's body.
What you actually do there can also be wrapped into
Application
extension class.so in all of your activities this method can be:
public static void onSignInClicked(View view)
{
// static method with call with reference to the current activity
SignInHelper.doSignIn(this);
}
or
public static void onSignInClicked(View view)
{
// global method in your `Application` extension
// with reference to the current activity
((MyApplication)getApplicationContext()).doSignIn(this);
}
If you choose the second way, don't forget to update your androidManifes.xml
by setting the name
attribute of your application
tag:
<application android:name=".MyApplication" [...]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With