Android :: Accessing Common Methods Among Activities
Jun 20, 2010I have Activity A and Activity B. I want to access a method in Activity A from Activity B. This is my method:
Activity A extends activity{
public void save(){
} }

I have Activity A and Activity B. I want to access a method in Activity A from Activity B. This is my method:
Activity A extends activity{
public void save(){
} }
I have an Android application composed by several Activities. Most of them need to check whether an active network is available or not:
public boolean isNetworkAvailable() {
ConnectivityManager cm = (ConnectivityManager)
getSystemService(Context.CONNECTIVITY_SERVICE);
TelephonyManager tm = (TelephonyManager)
getSystemService(Context.TELEPHONY_SERVICE);
...
}
I would like to move that code to a helper class in order to avoid the need to write that code in every Activity, but calls to getSystemService are only allowed from an Activity. The other alternative is to move that code to a parent activity use inheritance but:
Every activity already extends from android.app.Activity
Some of my activities already extend from a common my.package.BaseActivity
(Activity <- BaseActivity <- XXXActivity)
What do you recommend in this case? Is there any other alternative?
I know rule #1 of optimization is: don't do it! But I figured this was an easy question, and if I start using the faster method now I can save a lot of cpu time when I'm finished.Now, the answer to my question may be "there's no difference" and that's fine with me. I just want to know.
View 4 Replies View RelatedI have some information stored as SharedPreferences. I need to access that information from outsite an Activity (in from a domain model class). So I created a static method in an Activity which I only use to get the shared preferences. This is giving me some problems, since apparently it is not possible to call the method "getSharedPreferences" from a static method. Here's the message eclipse is giving me:
Cannot make a static reference to the non-static method
getSharedPreferences(String, int) from the type ContextWrapper
I tried to work around this by using an Activity instance, like this:
public static SharedPreferences getSharedPreferences () {
Activity act = new Activity();
return act.getSharedPreferences("FILE", 0);
}
This code gives a null point exception. Is there a work-around? Am I going into an android-code-smell by trying to do this?
I have a click listener:
private OnClickListener onMyListener = new OnClickListener() {
public void onClick(View v) {
myMethod();
} };
And my Method:
private String myMethod() {
TextView tv = (TextView) findViewById(R.id.TextView1);
return (String) tv.getText();
}
When it calls this method, at tv.getText() it breaks in the debugger.
With this in the stack --
ViewRoot.handleMessage(Message) line: 1571
ViewRoot(Handler).dispatchMessage(Message) line: 99
Looper.loop() line: 123
ActivityThread.main(String[]) line: 3948
Method.invokeNative(Object, Object[],
Class, Class[], Class, int, boolean)
line: not available [native method] Method.invoke(Object, Object...) line: 521 ZygoteInit$MethodAndArgsCaller.run() line: 782 ZygoteInit.main(String[]) line: 540 NativeStart.main(String[]) line: not available [native method]
Need help closing/accessing my views in a simple app (included an img of my program layout) but I might have been too confusing. Basically, I have an app that has a main menu where the user can click a button to open a camera. The user then snaps a photo and it is displayed on a page. The user will then click another button that detects faces. If faces are detected, the user is sent to a final page that shows the cropped face, etc. I give the user the ability to return to the main menu or snap a new photo.
Let's say a new photo is snapped and the user does it a few more times. Now I have multiple saved instances of old snapped photos (presented on the layout). How do I kill the previous instance (the layout from before he decided to snap a new photo)? So when I try to close the app it doesn't go back to the previous instance (displayed layout of said snapped photo). I am so confused on this one thing.
I am creating an app which allows for many different Activities to be started from a TabActivity(up to ~25). Most of the activities require data from the sqlite database, so when onCreate is run, an AsyncTask creates an SQLiteOpenHelper object(which will open a readable/writable database), runs a query, data is retrieved, and everything is then closed.
I was just testing messing around to see if i could break something, so i added every Activityto the TabActivity's TabHost. I then started mashing each tab as quickly as possible.
I noticed that very quickly i began to see in the LogCat: Caused by: android.database.sqlite.SQLiteException: database is locked: BEGIN EXCLUSIVE; and the app proceeded to die.
Typically there will only be about 4-6 tabs(i can just limit the user anyway) for the TabHost. I haven't been able to break anything with a small amount of tabs to mash, but i am still worried that maybe i am accessing the database in a poor way.
How can i prevent my SQLiteDatabase objects to cause a lock?
If i create a ContentProvider will that eliminate the possibility of database locking?
Do you have any suggestions for changes I could make for accessing data from an SQLiteDatabase?
I ended up taking the approach of using the Application class and storing 1 SQLiteOpenHelper and trying my best to keep it synchronized. This seems to be working great - i put all my 25 activities in the TabHost and mashed away on them with no errors.
I am calling ((SQLiteDbApplication)getApplication()).setDbHelper(new DBHelper(this, Constants.DB_NAME, null, Constants.DB_VERSION_CODE)); method(shown below) in every onCreate() in my activities
Any further suggestions to this approach or to the changes i made using this Application class?
CODE:...................
Is there any way we can access methods annotated with a @hide without changing the Android source code? Can we use reflection to do that?
View 5 Replies View RelatedI have some shared preferences (user_id, email) that I want to access from services and classes that are not subclassed from Activity. I have been trying to implement this today and keep hitting roadblocks. In particular, when I try to access getSharedPreferences, I get a null pointer exception. My code is posted below. My goal here is to allow read access the shared preferences to objects and (potentially) services that aren't going to be directly exposed to the user.
<snip> public class MyPrefs extends Service {
public static final String PREFS_NAME = "MyPrefs";
private int user_id;
private String user_email;
private String user_password;
private Editor editor = null;
private SharedPreferences settings = null;
public MyPrefs () {
settings = this.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
}
</snip>
this.getSharedPreferences line causes a null pointer exception.
I have a todo list type application that stores all of the note data in a sqlite3 database. Each activity in the application needs access to the database to edit different parts of the data in real time.
Currently, I have each activity open its own DBManager object (the helper class I created to manage the database). This is causing problems though and I would like a slightly more global access solution so I don't have to keep opening/closing/creating a database.
I'm considering several options, and would like to hear pros and cons of each as well as other suggestions.
Singleton style. Have a wrapper class that returns a reference to the only database manager so any activity that needs it can use it.
Static Manager. Have the manager class be entirely static members and have it open the database on load. Easily accessible by anyone that needs it (which is everyone).
Merger between 1 and 2. I could make a database manager class that initializes the member singleton instance of the database and all of the data manipulation methods were static. Then I wouldn't even need a reference to the singleton to access the database.
I'm looking into writing simple graphics code in Android and I've noticed some synchronized() blocks. What is the reasoning behind this and how do I know when I should be "synchronizing" my code?
View 1 Replies View Relatedhow to call BarCodeScanner, and return the value to a field.so now, i have a toast that says "successful scan" and then i want to pass the result to a new activity. when i comment out my intent, everything works (minus the passing of data/switching of screen, obviously) but when i run my project as is, it FC's no errors reported by eclipse in code or xml. any insights?
View 2 Replies View RelatedI am a game developer and have developed a nice global high scores module. The source code is in two different games of mine and anytime I make changes I carefully copy and paste the java files from one project to the other. As I increase the sophistication of this module, the copying and pasting can take a day or two to make sure I get it right. Now I am finishing up my third game and want to add the high scores module, but copying and pasting this in three separate projects seems absurd and will take up much of my time! Is there any way to externalize this module?
Unfortunately, the module makes reference to R for strings, layouts and other resources. It also uses common Android functions and resources from the Android library. Almost anything would be easier than the method I am using now--so any and all suggestions are welcome!
I have a set of common code (including .java files and resources), which I have to use for two similar applications with different package names (for different vendors). How can I maintain two packages which share the common code without making two copies of the common source?
View 3 Replies View RelatedI am Working on develop an application .In my application I want to Put application header as it look like "Android Market Application". I need help on following issues.
1)How to put all header same for all activities in the application.
2)How to put the common header like in android market application.
3)How to put a common footer for all activities in application.
If possible send source code for my understanding.
I'm trying to use some common formatting for a number of different labels, all with different text. From http://android-developers.blogspot.com/2009/02/android-layout-tricks-, it seems as though I should be able to do something like the following:
<include android:text="@string/description" layout="@layout/label"/>
Where, in label.xml, I have:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
<!-- more detailed formatting to come later --> />
For some reason, the text of the label is showing up empty when I do this. But I can successfully add an ID in this fashion, and then change the text of the label in my application code. For example:
<include android:id="@+id/description_label" layout="@layout/label"/>
What are the most easy mistakes to make that can be performance sinks on Android?
The documentation mentions "some floating point operations" can be "on the order of milliseconds" - has someone tested this?
For the sake of discussion, let's assume its running on a G1/similar device.
I have done some cusomtizations on general user interface behavior. I would put those features into my applications. Therefore, I package my source code as a jar and add this external library to my applications.
As my cusomtization include some inflation of xml files, I put those resource in my package. However, when I finished compiled my application and ran it, it reports error. It seems cannot locate the xml file in the jar. (My debugger stop while inflate the xml file). Do I miss any step to use my jar file?
I have a TabHost with 4-5 tabs. I want to have a similar bottom for all the tabs. Is there any way we can add a bottom to all the tabs? Or do I need to place the xml code in every layout file.
View 1 Replies View RelatedIs there a way to launch a viewer for common file types like TXT, DOC, XLS, PDF from within an app, like Gmail does. Maybe a Google Docs api to pass the file to GD and have it open in the browser?
View 2 Replies View RelatedI'd like to bring out an Android app in the near future, so I was wondering how to support a couple of funcitonalities I have got used whilstdeveloping for J2ME and iPhone
first the versioning. With J2ME (using NetBeans as IDE) I had the option to auto-increment the softwwares version every time I compiled it. I was wondering if something like this is available for Eclipse and if so how to use it ? secondly a common code base. Is it possible to have a common code base for several projects ? For example I might have a game which actually uses the same code but needs different graphic resources. I'd hate to have a different project for every game/app and have to manually edit every project's source every time I want to submit a new code-change.
I'm making out a few menus for my Android App and throughout there is a standard textview that is repeated 5 times, only changing the android:text tag each time, everything else is the same.There are a good number of properties on this and it feels very inefficient to be copy/pasting all these for each of the textviews.Is there a way I define the common properties just once and add them to each TextView element?
View 1 Replies View RelatedI am currently moving from Xcode and iPhone development to Android with Eclipse. I want to have a shared code project so that I can store all the code to be shared across apps in one common library. However it would appear that the only android project available is for applications and not for code libs how can i achieve this?
View 4 Replies View RelatedThe application I am developing is in large parts a background-only Service BUT requires some settings that the user must add. Is there a way to integrate applications with the common Settings application/view/activity?
View 1 Replies View RelatedI am working on developing several individual android applications. We had created common UI Layout View XMLs, classes and resources. I would like to share these common layout xml, classes and resources across all of my android applications. I dont want to duplicate them in my applications. Is there any easy way to do this?
View 5 Replies View RelatedI find it amusing how many Senseless ROMS are popping up. The majority of all ROMS thus far are Senseless and I don't really get it. The main reason I sold my MotoDroid to get the HTC Incredible was for SenseUI and now everybody is wanting to ditch it. I need more Sense ROMs to play with and theres just nothing to choose from. SO I figured I would start a poll and see if I am the only one. So is it a Sense or Senseless ROM preference?
View 38 Replies View RelatedSo my phone spontaneously rebooted today:
http://androidforums.com/captivate-all-things-root/210476-brand-new-captivate-rebooted-today.html
Is there a common app that may be causing this? Only thing I thought of was either the app Battery Booster, which selectively shuts down running processes to conserve battery, or Lookout, which is an antivirus and back up. Any thoughts?
I have a specific way I want to go about it. It will be video oriented and I need all the Droid default icons in png format for as many droid versions as possible. Im refering to basic app icons like those used for alarm, clock, internet, calendar, music, etc. I also need the samsung specific app icons in PNG format. I've gone through playstore and copied the PNGs for their app Icons. Its that manufacture default Icons and Samsung Icons that I can't find like "Polarise", "S Voice", "voice recorder"and the samsung specific "Music" App. a cache or archive of these types of Icons, or know where to get them?
View 2 Replies View RelatedI'm using the Facebook mobile site and the News Feed never comes up current with the newest listed first then descending. No matter how I refresh, or if I hit 'Home' or the actual "News' button. It randomly scatters them (differently each time I try to refresh). I tried the FB app that came with the phone as well - and the same thing happens. I've cleared cache, rebooted, and yet nothing seems to help. On my computer and laptop, the most recent are always listed first.
Is this common? Does anyone else have this problem? I've been watching the forum for quite some time to see if anyone else posted this problem and haven't seen anything yet......
Is there a way to add common system setting into the notification pull down menu?
On my old Samsung Galaxy S3, when you swipe down from the top of the screen and pull down notifications, at the top above notifications are buttons for common system settings to access (in order they are: Wi-Fi, GPS, Sound, Rotation, Bluetooth, Smart Stay, Airplane Mode, Power Saving, Hands-free mode, Screen Mirroring)
This was very useful because was easy to quickly access key functions. For example "1) swipe down and 2) press WiFi to turn on/off" or "1) swipe down and 2) press GPS to turn location on/off".
On my new Nexus 5 this functionality does not exist. When you swipe down to see notifications, key system buttons are not present. Instead there is a single system button in the upper right corner which you need to press to for common system settings (Brightness, Settings, WiFi, Mobile [ATT/Verizon], Battery, Airplane Mode, Bluetooth, Location)
This means to access common system settings requires an extra step. For example "1) swipe down, 2) press system button and 3) press WiFi to access WiFi page"
Is there a way to put these common system setting into the notification pull down menu?