标签: appcompatactivity

Activity,AppCompatActivity,FragmentActivity和ActionBarActivity:何时使用哪个?

我来自iOS,这很容易,你只需使用UIViewController.然而,在Android中,事情看起来要复杂得多,某些UIComponents用于特定的API级别.我正在阅读BigNerdRanch for Android(这本书大约有2年了),他们建议我Activity用来托管我的FragmentActivities.但是,我认为Activity已被弃用.

因此,对于API级别22(对API级别15或16的最低支持),我应该使用什么来托管组件以及组件本身?是否有所有这些用途,或者我应该几乎完全使用一两个?

android android-fragments android-activity android-actionbaractivity appcompatactivity

246
推荐指数
7
解决办法
17万
查看次数

与ActionBarActivity相比,AppCompatActivity的增强是什么?

android.support.v7.app.AppCompatActivity 昨天作为新功能添加到最新的v7支持库中.

据说ActionBarActivity已经弃用了新的AppCompatActivity,这AppCompatActivity是使用支持库操作栏功能的活动的基类.那么,什么是新的功能AppCompatActivityActionBarActivity?做什么改进AppCompatActivity有过ActionBarActivity?有什么好处AppCompatActivity?有人可以提供一些样品吗?

任何提示都表示赞赏.并提前感谢.

PS:最让我感到惊讶的是,AppCompatActivityandroid.support.v4.app.FragmentActivity直接的父类延伸出来的是什么ActionBarActivity!我的意思是现在实际上ActionBarActivity可以做任何AppCompatActivity可以做的事情,为什么Android会推出后者呢?

同时,我看到了一篇博客文章,指出:" 这不是从命名ActionBarActivityAppCompatActivity,内部逻辑AppCompat通过可用AppCompatDelegate ",那么什么是" 内在逻辑的" AppCompat?有什么可以AppCompatDelegate做什么?有人会发布一些关于此的代码吗?

android android-appcompat android-actionbaractivity appcompatactivity

164
推荐指数
5
解决办法
9万
查看次数

无法解析AppCompatActivity

重命名应用程序包名称后,Android Studio显示此错误 can't resolve symbol AppCompatActivity

我试过的事情:

  • 清洁项目
  • 清理Android Studio缓存
  • 清理Gradle缓存
  • 重新安装IDE
  • 文件 - >无效缓存/重启

但没有什么真正帮助.项目构建成功,但我不能使用语法高亮.

我用了 com.android.support:appcompat-v7:23.1.1

截图

BaseActivity

构建gradle文件

android android-appcompat android-studio appcompatactivity

39
推荐指数
7
解决办法
7万
查看次数

错误:方法调用不明确.AppCompactActivity和Activity中的findViewById(int)

我在使用Android Studio 3.0 RC1初始化工具栏时收到错误:"模糊方法调用".我已经使用AppCompatActivity扩展了我的Activity并使用'compileSdkVersion 26'编译我的应用程序.附上错误的屏幕截图.在此输入图像描述

android android-appcompat android-studio appcompatactivity android-studio-3.0

38
推荐指数
3
解决办法
2万
查看次数

如何从Activity扩展ActionBarActivity或AppcompatActivity与Dialog主题删除标题栏

我不得不在ActionBarActivity之前和现在从AppcompatActivity扩展我的Activity主题Theme.AppCompat.Light.Dialog,因为我的Base Activity扩展了这个.

但是现在有了新的appcompat v7(v22)库我的Activity开始显示标题栏,尽管我使用自定义样式的项目windowActionBar = false,android:windowNoTitle = true.但是在appcompat库升级之前没有这样的问题,标题栏没有显示.

如果我的活动扩展了FragmentActivity,一切都还可以,我明白也许我使用了一个糟糕的模式,我的对话活动从AppcompatActivity扩展但我想知道有没有办法删除标题栏?

android title android-appcompat appcompatactivity

30
推荐指数
7
解决办法
3万
查看次数

如何在AppCompatActivity中显示带有图标和文本的菜单项

我在xml文件中尝试了不同的组合:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        app:showAsAction="ifRoom|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

要么

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        app:showAsAction="always|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

要么

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        app:showAsAction="withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

要么

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">
    <item
        android:id="@+id/action_create_alarm"
        android:icon="@drawable/ic_action_accept"
        android:orderInCategory="100"
        android:title="@string/menu_create_alarm"
        android:showAsAction="always|withText" />
</menu>
Run Code Online (Sandbox Code Playgroud)

我尝试以编程方式设置它

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater){
        MenuItem item = menu.add(R.string.menu_create_alarm);
        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_WITH_TEXT|MenuItem.SHOW_AS_ACTION_IF_ROOM);
        item.setIcon(R.drawable.ic_action_accept);
        item.setOnMenuItemClickListener(
            new OnMenuItemClickListener(){

                @Override
                public boolean onMenuItemClick(MenuItem item){
                    saveAlarm();
                    return …
Run Code Online (Sandbox Code Playgroud)

android menuitem android-toolbar appcompatactivity

29
推荐指数
7
解决办法
6万
查看次数

如何修复:"你需要在这个活动中使用Theme.AppCompat主题(或后代)"

根据视频说明,我无法在全屏模式下运行Android应用.当它试图运行时,应用程序崩溃并出现错误.

"You need to use a Theme.AppCompat theme (or descendant) with this activity

清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.djsg38.hikerswatch">

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

</manifest>
Run Code Online (Sandbox Code Playgroud)

样式文件

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

可能有用的部分MainActivity

public class MainActivity extends AppCompatActivity {
Run Code Online (Sandbox Code Playgroud)

android android-appcompat appcompatactivity

29
推荐指数
4
解决办法
8万
查看次数

不要请求Window.FEATURE_ACTION_BAR问题

我正在尝试构建我的应用程序,但没有成功..我尝试了几种方式,但没有任何工作.例外是:

Caused by: java.lang.IllegalStateException: This Activity already has an action bar supplied by the window decor. Do not request Window.FEATURE_ACTION_BAR and set windowActionBar to false in your theme to use a Toolbar instead.
Run Code Online (Sandbox Code Playgroud)

我的style.xml是:

<resources>

    <style name="AppTheme" parent="Theme.AppCompat.Light">

        <!-- theme customizations -->

        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowActionBar">false</item>

        <item name="android:textColorPrimary">@color/ldrawer_color</item>
        <item name="actionMenuTextColor">@color/ldrawer_color</item>
        <item name="android:textColorSecondary">@color/ldrawer_color</item>
    </style>

</resources>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我已经宣布了

<item name="android:windowNoTitle">true</item>
<item name="android:windowActionBar">false</item>
Run Code Online (Sandbox Code Playgroud)

这是我的manifest.xml

 <application
        android:allowBackup="true"
        tools:replace="android:icon"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" …
Run Code Online (Sandbox Code Playgroud)

java xml android appcompatactivity

19
推荐指数
2
解决办法
5万
查看次数

java.lang.NoSuchMethodError:没有静态方法setOnApplyWindowInsetsListener

我将我的android工作室升级到2.1.3.现在我得到了以下错误

java.lang.NoSuchMethodError: No static method setOnApplyWindowInsetsListener(Landroid/view/View;Landroid/support/v4/view/OnApplyWindowInsetsListener;)V in class Landroid/support/v4/view/ViewCompatLollipop; or its super classes (declaration of 'android.support.v4.view.ViewCompatLollipop' appears in /data/data/com.restroshop.restroowner/files/instant-run/dex/slice-internal_impl-24.2.0_7c318f8d2adb03d07a9def5d35a14e39204ecef2-classes.dex)
at android.support.v4.view.ViewCompat$LollipopViewCompatImpl.setOnApplyWindowInsetsListener(ViewCompat.java:1619)
at android.support.v4.view.ViewCompat.setOnApplyWindowInsetsListener(ViewCompat.java:2924)
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:425)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:312)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:277)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
at com.restroshop.restroowner.splash.SplashScreen.onCreate(SplashScreen.java:65)
at android.app.Activity.performCreate(Activity.java:6033)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1106)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387)
at android.app.ActivityThread.access$800(ActivityThread.java:151)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:902)
Run Code Online (Sandbox Code Playgroud)

排队 setContentView(R.layout.activity_splash_screen);

我的代码片段是

public class SplashScreen extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_splash_screen); // this line giving error …
Run Code Online (Sandbox Code Playgroud)

android oncreate appcompatactivity

16
推荐指数
2
解决办法
3万
查看次数

工具栏上的Android后退箭头(AppCompatActivity)

我想在我的应用程序中显示后退箭头按钮,但当我将其放入我的代码时应用程序崩溃:

getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
Run Code Online (Sandbox Code Playgroud)

style.xml

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/PrimaryColor</item>
    <item name="colorPrimaryDark">@color/PrimaryColorDark</item>
    <item name="colorAccent">@color/PrimaryColor</item>
    <item name="colorControlHighlight">@color/ControlHighlight</item>
    <item name="android:statusBarColor" tools:targetApi="21">@android:color/transparent</item>
</style>


<style name="ActionBarPopupThemeOverlay" parent="ThemeOverlay.AppCompat.Light" >
    <item name="android:textColor">#000000</item>
</style>


<style name="MyCustomTabLayout" parent="Widget.Design.TabLayout">
    <item name="tabIndicatorColor">#FFFFFF</item>
    <item name="tabIndicatorHeight">3dp</item>
    <item name="tabTextAppearance">@style/MyCustomTabTextAppearance</item>
</style>


<style name="MyCustomTabTextAppearance" parent="TextAppearance.Design.Tab">
    <item name="android:textColor">#FFFFFF</item>
</style>
Run Code Online (Sandbox Code Playgroud)

toolbar.xml

<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="@dimen/abc_action_bar_default_height_material"
android:elevation="0dp"
android:layout_width="match_parent"
android:id="@+id/toolbar"
android:background="@color/PrimaryColor"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
app:popupTheme="@style/ActionBarPopupThemeOverlay"/>
Run Code Online (Sandbox Code Playgroud)

类(不是片段):

public class WebViewCanale extends AppCompatActivity {

    Toolbar toolbar;
    TextView textView;
    WebView webView;
    ProgressBar progressBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.webview_canali);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        getSupportActionBar().setDisplayShowHomeEnabled(true);

        //Toolbar …
Run Code Online (Sandbox Code Playgroud)

android toolbar android-actionbar-compat android-toolbar appcompatactivity

15
推荐指数
4
解决办法
4万
查看次数