Android AppCompat Library usage - android

I found on many blogs and tutorials links, where clearily written to support AppCompat Library we should use ActionBarActivity to extend Class instead of normal Activity.
So its clear to me, but i have few doubts in my mind regarding extending ActionBarActivity.
Questions are:
what if my class extends Fragment (is there i need to extends ActionBarActivity) while using AppCompat Library?
what if my class extends ListActivity (is there i need to extends ActionBarActivity) while using AppCompat Library (if 'yes' so how ?)

1) ActionBarActivity extends FragmentActivity so you can use fragments with it
2) Instead of using ListActivity you have to add a ListFragment to your ActionBarActivity (or FragmentActivity). You can add it to android.R.id.content so it occupies the whole screen.

Related

How to implement ListActivity with icon in ActionBar?

When I use MainActivity extends ListActivity this happens:
If I use MainActivity extends AppCompatActivity this happens:
I verified when I changed theme of Theme.AppCompat to android:Theme.Holo for ListActivity this happens, but I can't find a theme with support for this!
If I'm reading your problem correctly, you want your MainActivity to extend ListActivity, but you also want your app to make use of the AppCompat support library?
If so, it would be quite straightforward to create your own ListActivityCompat class that extends AppCompatActivity, using the source code for ListActivity as a guide, It isn't an especially long file, and most of it you should be able to paste in verbatim.

Android Sliding Tabs With Material Design issue

I am creating a demo project for sliding tab with material design.
When I am doing like below :
public class MainActivity extends ActionBarActivity { // source code}
It will show red line on "ActionBarActivity". It is not allows for extends.
I have follow steps from http://www.exoguru.com/android/material-design/navigation/android-sliding-tabs-with-material-design.html
Any help would be greatly appreciated.
Since the version 22.1.0, the class ActionBarActivity is deprecated. For better approach you should use AppCompatActivity
Just change your dependency,Like :
compile "com.android.support:appcompat-v7:22.1.0"
FYI, ActionBarActivity is deprecated but it should not show red lines, that is an error indication probably due to import! Use AppCompatActivity introduced in support V7 library.

new features / enhancements for AppCompatActivity comparing with ActionBarActivity [duplicate]

android.support.v7.app.AppCompatActivity was added into the latest v7 support library as a new feature yesterday.
It is said that ActionBarActivity has been deprecated in favor of the new AppCompatActivity and that AppCompatActivity is base class for activities that use the support library action bar features. So, what are new features of AppCompatActivity over ActionBarActivity? What enhancements do AppCompatActivity have over ActionBarActivity? And what are advantages of AppCompatActivity? Could somebody supply a few samples?
PS: what surprised me most is that AppCompatActivity which is extended from android.support.v4.app.FragmentActivity is the direct parent class of ActionBarActivity! I mean actually now that ActionBarActivity can do anything that AppCompatActivity can do, why did Android pushed out the latter?
Meanwhile, I saw a blog post that states: "It's not a rename from ActionBarActivity to AppCompatActivity, the internal logic of AppCompat is available via AppCompatDelegate", so what's the "internal logic" of AppCompat? What can AppCompatDelegate do? Could somebody post some code about this?
As Chris wrote, new deprecated version of ActionBarActivity (the one extending AppCompatActivity class) is a safe to use backward compatibility class. Its deprecation is just a hint for you asking to use new AppCompatActivity directly instead. AppCompatActivity is a new, more generic implementation which uses AppCompatDelegate class internally.
If you start a new development, then you should rather use new AppCompatActivity class right away. If you have a chance to update your app, then replace deprecated ActionBarActivity by the new activity as well. Otherwise you can stay with deprecated activity and there will be no difference in behavior at all.
Regarding AppCompatDelegate, it allows you to have new tinted widgets in an activity, which is neither AppCompatActivity nor ActionBarActivity.
For instance, you inherit an activity from an external library, which, in turn, does not inherit from AppCompatActivity but you want this activity to have tinted materials widgets (views). To make it happen you need to create an instance of AppCompatDelegate inside your activity, override methods of that activity like addContentView(), setContentView() etc. (see AppCompatDelegate javadoc for the full list of methods), and inside of those overridden methods forward the calls to the inner AppCompatDelegate instance. AppCompatDelegate will do the rest and your "old-fashion" activity will be "materialized".
It's mostly a name change: ActionBarActivity doesn't really describe everything it now does. You can safely use ActionBarActivity if you wish to. Think of it like a symlink.
The AppCompat Support Library started with humble, but important beginnings: a single consistent Action Bar for all API 7 and higher devices. In revision 21, it took on new responsibility: bringing material color palette, widget tinting, Toolbar support, and more to all API 7+ devices. With that, the name ActionBarActivity didn’t really cover the full scope of what it really did.
http://android-developers.blogspot.it/2015/04/android-support-library-221.html
AppCompatActivity was introduced into Android-SDK since the release of android support appcompat library.
AppCompatActivity is the direct child class of FragmentActivity of support v4 and the direct parent class of ActionBarActivity.
AppCompatActivity is the base class for activities that use the support library action bar features.
You can add an ActionBar to your activity when running on API level 7 or higher by extending this class for your activity and setting the activity theme to Theme.AppCompat or a similar theme.
As for support v7 appcompat library, it adds support for the Action Bar user interface design pattern. This library includes support for material design user interface implementations.
Here are a few of the key classes included in the v7 appcompat library:
ActionBar - Provides an implementation of the action bar user
interface pattern.
AppCompatActivity - Adds an application activity class that can be
used as a base class for activities that use the Support Library
action bar implementation.
AppCompatDialog - Adds a dialog class that can be used as a base
class for AppCompat themed dialogs.
ShareActionProvider - Adds support for a standardized sharing action
(such as email or posting to social applications) that can be
included in an action bar.
After you download the Android Support Libraries, this library is located in the /extras/android/support/v7/appcompat/ directory.
Previously the only entry point into AppCompat was through the now deprecated ActionBarActivity class. Unfortunately this forced you into using a set Activity hierarchy which made things like using PreferenceActivity impossible.
see chris banes's support-libraries-v22-1-0 for more info
The latest release of android support library, 22.1, deprecates the ActionBarActivity in favor of AppCompatActivity, which promises to bring a single consistent ActionBar for all devices starting with API Level 7 and above

Tabbed Activity Template ActionBar.TabListener deprecated

I am using the Tabbed Activity (that includes swipes and tabs) and when I was looking at the generated code, noticed that "ActionBarActivity" is deprecated. So I went online android docs and show that I should use "AppCompatActivity" insted, I changed the extending class from ActionBarActivity to AppCompatActivity and there was no problem. However, there is another deprecated interface and that is ActionBar.TabListener. What should I use instead of this interface ?
Switch to toolbar much easier to work with you can use pagerslidingtabstrip and link it with your viewpager.

How to get FragmentManager for PreferenceActivity on Android?

Should i inherit from another activity class? I need to use dialog fragments on PreferenceActivity so the Activity should be FragmentActivity inheritor. I can use support library but i can't understand - from one hand i should inherit from PreferenceActivity, from another - from FragmentActivity
I need to use dialog fragments on PreferenceActivity so the Activity should be FragmentActivity inheritor.
That's not possible, short of possibly cloning the entire Android 2.x implementation of PreferenceActivity into your own class that extends FragmentActivity.
Normally, dialogs associated with preferences are handled by creating custom DialogPreference classes, not via a DialogFragment.

Categories

Resources