I'm new to Android development so I don't know the correct coding paradigm. I'm creating a money management app and so far I have one main/launcher activity that runs all of the app's different screens: load, menu, person, etc.
Should I be creating a separate activity for each screen? What's the benefit of using smaller activities within one application?
Should I be creating a separate activity for each screen?
At least on phones, probably yes.
What's the benefit of using smaller activities within one application?
You run out of screen space otherwise.
Now, you may wish to consider organizing your UI into fragments, so that one devices with larger screens, one activity could load up a few fragments, to make best use of the space, while maintaining a "one fragment per activity" model for smaller-screen devices like phones:
Related
I have an android application working in mobile, this app has two types of activities ones that loads a list of items, and forms that open when you touch one item.
Now I have to port the app to tablet and the layouts need to be fully restructured to fit big screens, so much that the java code has to be heavily changed so i thought to merge both activities in one as shown below
Is that possible?
And if its what i need to use, fragments?
Can each activity still in its own class?(this is critical)
Can each activity have its own network operations and AsyncTasks?
Yes as you said you can use fragments for your situation (Infact their main purpose is to support different screens without code duplication). So you'll have only 1 Activity class and 2 layouts for different devices and you just need to do some run time checks and perform actions according to them.
Here you can find tutorial :- https://developer.android.com/training/basics/fragments/index.html
is not possible because only one activity working in single screen in android. i have one idea to put two fragment in single activity then use your own AsyncTasks network operation.
I just started developing mobile app with phonegap.
I want to check the best practice in maintaining screens.
Is it possible to have only one activity and navigating screens with html's.
If so is it correct practice?
Besides, when we need to maintain activities and corresponding html's on t top of them.
navigating screens with html's means using WebView and act like a browser?
If the project is small and you are the only developer, Yes. Can have only one activity. and navigate through various fragments is possible. but not very recommend. One of the reasons is, with only one activity make it difficult for team work.
From what I understand, and activity is equivalent to a "page" in a web app.
For example, the list view would be one activity, edit view another activity, and add view a third activity.
While this works as expected, android activities seem to operate as individual apps--the action bar is different for each activity and so are the menus.
Is my usage of activities above correct or should I be using some other mechanism such as swapping out layouts and views?
Fragments are a core part of activities - not that much different. The use of fragments comes since Honeycomb 3.0 and the idea is an option to split the screen in several fragments at once. For example if you look at the gmail app for a tablet - you have one fragment on the left dealing with navigation and then the next fragment on the right is the list of emails.
On a mobile device, viewing area is limited, so you it could be said that fragments sort of behave like an activity - you interact with one fragment, which triggers another and so on and so fort. But in the end you always reference a super activity of each of these fragments - for example when you want to access the context.
So if you just want to wrap web pages in WebViews, stick with activities. If your scenario might involve developing for both tablets and phones, then go for the fragments.
Alternatively, you can read about the design philosophies of both here:
http://developer.android.com/guide/components/fragments.html
Good luck!
Fragments are to be used when you have common feature across multiple activities. From my perspective you should use individual activities as there will be back-end code to support (fetch and validate data, i.e. business logic). This way you have more modular code. Fragments is a new feature from v3.0.
From what I know, Fragments would be a good option to be able use different configurations/real estates on different devices. For example, if you are on a device with big real estate like Tablets or TVs you can display more content in a single activity, on the other hand for a devices with smaller real estate you can show content based on a progressive manner.
See this: http://developer.android.com/training/multiscreen/adaptui.html
Note that Fragments are supported only on devices running Android 3.0, so you might have to use Support Fragments (See: https://stackoverflow.com/a/6528757/713778)
But Again it depends on your specific needs. I am not sure what your exact use case is, but I would suggest you to watch some Android design in Action for some examples to improve your design and make your app "User Centric" (See: https://www.youtube.com/playlist?list=PLWz5rJ2EKKc8j2B95zGMb8muZvrIy-wcF)
I recently came across this https://www.youtube.com/playlist?list=PLWz5rJ2EKKc-riD21lnOjVYBqSkNII3_k seems provide an in-depth analysis on User Experience.
I would recommend using fragment for web like views. Fragments are pretty snappy compared to activities and reusable.
But before you start, make sure to fragments are good fit for your requirements since they are supported from android 3.0.
You can declare fragments from xml itself or you can create frame layout and add that view in the code itself.
http://www.c-sharpcorner.com/UploadFile/2fd686/fragments/
The above link has a good example tabhost.
I’m in the process of implementing a new version of an app and want it to move towards using fragments and thereby enabling it to be used on tablet devices.
I have read several approaches (e.g. How many Activities vs Fragments?) and the guidelines on developer.android.com (http://developer.android.com/guide/practices/tablets-and-handsets.html).
The Android Guide aims for one monolithic Activity for Tablets that deals with replacing fragments as needed whereas the handheld version does it by using multiple activities.
See example: http://developer.android.com/images/fundamentals/fragments.png
Why are these two approaches not combined?
Let’s say FragmentA from the above image is the menu of my application where I can select a different aspect and FragmentB is the corresponding Content for the selected item.
Tablet devices
If my application can be separated into different aspects that correspond to the items in the menu, wouldn’t it make more sense to encapsulate the functionality behind each menu item inside a different Activity instead of using one monolithic one?
Selecting an item in the menu would exchange Activity A by ActivityB/C/D/E. Whereas those are configured in the same way, in the sense that is has a menuFragment on the left and its content fragment on the right. Interactions in the contentFragment would replace it with different fragments and so on. But the functionality would be covered by the specific Activity that holds it. So I would not have one monolithic Activity, but smaller and more specific ones.
Handheld devices
Similar to the above, instead of using a different activity per ”screen” I could reuse ActivityA/B/C/D/E and their contentFragment in a singlePane-Layout by replacing it accordingly by specifying the singlePane-layout for handheld devices. One Activity manages one task with several fragments.
So I would end up with the same number of Activities for tablets and handheld devices that are configured the way to handle both cases a bit different. Activities would be neither gigantic and full of logic nor totally dumbed down, but somewhere in between.
Is there something wrong with this approach?
I’m currently thinking about how to move forward and this approach seems reasonable to me, but maybe there are things I have not considered that make it not the best choice.
For very long time, I think what is the reason of using fragment in Android if I just develop the application for Android Phone only but not 10.1.
Is it necessary to use fragment? Also, what is the usage of fragment,
I found that it may use for 'tab' and 'separate view'...
I really think it is very confusing. Can anyone explain briefly and give example?
From documentation
You can think of a fragment as a modular section of an activity, which
has its own lifecycle, receives its own input events, and which you
can add or remove while the activity is running (sort of like a "sub
activity" that you can reuse in different activities).
Some advantages are..
A particular UI part, once done in fragment, can be reused in
same/different activities.
You can separate different sections of UI, hence code will be neat,
and easy readable.
The ability of fragment to be able to reuse is very helpful when you are creating applications for different kind of android devices (phones, tablets). A well designed fragment can be just plugged into your UI hierarchy.
Fragments is a new concept introduced in 3.0 version.
The basic purpose of fragments is:
Fragments are designed to use the device UI space efficiently.
When you are writing an application in android, then some people can download it into phone, some into tablets. If you see the space in tablets it will be little bigger than phones. You should be able to use that space efficiently. But you can't keep writing different applications one targeting for phone, and other targeting for tablets. In order to do it efficiently, i.e writing only application that can fit well with all screen sizes, we use fragments concept.
fragments are designed as a reusable UI components between more than one activity.
Once you design a fragment, you can view it as a detachable independent unit, so that you can plug it into any activity where ever there is a space. That means you can reuse the code designed for a fragment.
Fragment you can think of it like a sub activity, which sits with in an activity and which contributes its own UI to the activity screen.
Fragments are always part of an activity. With out an activity, a fragment will not exist. So your fragment life cycle will always be affected by activity life cycle.
An activity can contain more than one fragment. Similarly a fragment can be re used in multiple activities.
If you use Fragment in your application, your apps will support all the device like small device, tablet and even google TV. In one .apk file, we will have different design for various devices.
This is the best Android tutorial that I've ever found. Section 21 covers fragments
Refer Here