Articles of appcompatactivity

AppCompatActivity而不是Activity或FragmentActivity

我一直在尝试通过导航抽屉和带有标签的滑动视图在Android中实现导航。 我已经关注了Google的开发人员教程( 这里和这里 ),除非我将Activity或FragmentActivity更改为AppCompatActivity并在操作栏代码中应用了其他更改,否则我永远无法让我的代码工作,例如将getActionBar更改为getSupportActionBar所以我不要去NPE。 现在的问题是: 1-当我遵循应该按原样运行的官方教程时,为什么需要进行这些更改? 2 – AppCompatActivity在这些情况下是否正确使用,还是有更好的方法来做同样的事情? 3 – 这些情况是否与我选择的min sdk和target sdk有关? 我的最小sdk是14,我的目标sdk是22.我应该尝试降低目标sdk吗? 4 – 这些情况是否与我的应用程序的样式/主题相关? 这是android:theme =“@ style / AppTheme”>。 对此主题的一些见解表示赞赏,所以提前感谢您。 编辑:我注意到的另一件事是我总是需要导入android.support.v7.app.ActionBar而不是android.app.ActionBar所以我没有得到NPE,即使我的min sdk高于API 11。 Edit2:我注意到开发人员指南中存在一些矛盾。 因为我想使用ActionBar,所以我需要正确使用我的导入。 在这个链接之后 ,建议我包含v7 appcompat库,但是在这之后我需要导入android.app.ActionBar,因为我的min sdk高于11.就像我之前说的那样,使用android.app.ActionBar产生NPE,所以我该怎么办?

使用Toolbar和SwipeRefreshLayout的正确方法是什么?

我正在尝试使用SwipeRefreshLayout和工具栏,但每次我使用Progress Circle都会出现在工具栏上,这在设计方面非常糟糕。 我尝试将SwipeRefreshLayout放在工具栏下但不起作用,进度圆仍然出现在它上面(状态栏上方)。 我想像Gmail应用程序一样同时使用工具栏和布局。 我正在使用AppCompat库。 这是我的代码: 和 public class BluetoothActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener { private static final int REQUEST_ENABLE_BT = 0; private BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); private SwipeRefreshLayout mSwipeRefreshLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bluetooth); Toolbar bluetoothToolbar = (Toolbar) findViewById(R.id.bluetooth_toolbar); setSupportActionBar(bluetoothToolbar); final Drawable upArrow = getResources().getDrawable(R.drawable.abc_ic_ab_back_mtrl_am_alpha); upArrow.setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP); getSupportActionBar().setHomeAsUpIndicator(upArrow); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mSwipeRefreshLayout = […]

在AppCompatActivity主题中更改ActionBar的标题文本颜色

我想在我正在尝试的操作栏中更改标题颜色,如下所示: 我在Styles.xml中添加了以下内容(v14) @style/MyTheme.ActionBarStyle @style/MyTheme.ActionBarStyle @style/MyTheme.ActionBar.TitleTextStyle @style/MyTheme.ActionBar.TitleTextStyle @style/AppTheme.DrawerArrowToggle @color/greenText @style/MyTheme.ActionBar.TitleTextStyle @color/whiteText @android:color/black @color/actionbar_blackText 在我的清单中:我使用相同的主题。 在我的Activity类中:我将FragmentActivity更改为AppCompatActivity OnCreate看起来像这样: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getSupportActionBar().setDisplayOptions(getSupportActionBar().getDisplayOptions() | android.support.v7.app.ActionBar.DISPLAY_SHOW_CUSTOM); ImageView imageView = new ImageView(getSupportActionBar().getThemedContext()); imageView.setScaleType(ImageView.ScaleType.CENTER); imageView.setImageResource(R.drawable.logoforactionbar); android.support.v7.app.ActionBar.LayoutParams layoutParams = new android.support.v7.app.ActionBar.LayoutParams(android.support.v7.app.ActionBar.LayoutParams.WRAP_CONTENT, android.support.v7.app.ActionBar.LayoutParams.WRAP_CONTENT, Gravity.END | Gravity.CENTER_VERTICAL); layoutParams.rightMargin = 20; imageView.setLayoutParams(layoutParams); getSupportActionBar().setCustomView(imageView); getSupportActionBar().setTitle(getResources().getString(R.string.register_new)); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setIcon(android.R.color.transparent); setContentView(R.layout.register_new); } 但标题文字颜色不会改变,或者我也看不到黑色向上箭头。 文字和箭头是白色的…… 奇怪的是,在具有导航抽屉的另一个AppCompatActivity上也能正常工作。 […]

当应用程序的minSdkVersion为21时,我的活动应该延伸到什么程度?

我是Android和Android Studio的新手。 我创建了一个新项目,我已将minSdkVersion as 21指定minSdkVersion as 21并将target to 23指定target to 23 。 完成AS创建活动后,我发现默认情况下MainActivity正在扩展AppCompatActivity 。 我在这里阅读了AppCompatActivity 它表示它是使用支持库操作栏function的活动的Base类。 现在我的问题是: 由于我的应用程序的minSdkVersion为21,为什么我需要我的活动来扩展AppCompatActivity ? 为什么AS使我的活动默认扩展AppCompatActivity ? 我的活动是否有必要扩展AppCompatActivity或仅考虑我的minSdkVerion来扩展Activity就足够了? 如果我的行为不扩展AppCompatActivity,我会想念什么? 任何解释都会非常有用。 谢谢

Android studio的AppcompatActivity错误

在使用Android studio构建Android应用程序时出现此错误: 24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to find class referenced in signature (Landroid/os/PersistableBundle;) 08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 I/dalvikvm﹕ Could not find method android.support.v7.app.AppCompatActivity.onCreate, referenced from method com.mkapp.apps.demo1.TourActivity.onCreate 08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 W/dalvikvm﹕ VFY: unable to resolve virtual method 8393: Landroid/support/v7/app/AppCompatActivity;.onCreate (Landroid/os/Bundle;Landroid/os/PersistableBundle;)V 08-20 10:53:23.605 24192-24192/com.mkapp.apps.demo1 D/dalvikvm﹕ VFY: replacing opcode 0x6f at 0x0000 我的依赖: compile ‘com.android.support:support-v4:22.2.1’ compile ‘com.google.android.gms:play-services:7.3.0’ compile […]

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

我想在我的应用程序中显示后退箭头按钮,但是当我将其放入我的代码时应用程序崩溃: getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setDisplayShowHomeEnabled(true); style.xml @color/PrimaryColor @color/PrimaryColorDark @color/PrimaryColor @color/ControlHighlight @android:color/transparent #000000 #FFFFFF 3dp @style/MyCustomTabTextAppearance #FFFFFF toolbar.xml 类(不是片段) : 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 toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); //FindViewById webView = (WebView) findViewById(R.id.webview); textView = (TextView) […]

不要请求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. 我的style.xml是: @color/colorPrimary @color/colorPrimaryDark @color/colorAccent true false @color/ldrawer_color @color/ldrawer_color @color/ldrawer_color 你可以看到我宣布了 true false 这是我的manifest.xml 和我用来扩展其他活动的BaseActivity import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; public […]

如何解决:“你需要在这个活动中使用Theme.AppCompat主题(或后代)”

根据video说明,我无法在全屏模式下运行Android应用。 当它试图运行时,应用程序崩溃并出现错误。 “You need to use a Theme.AppCompat theme (or descendant) with this activity 清单文件 样式文件 @color/colorPrimary @color/colorPrimaryDark @color/colorAccent 可能有用的部分MainActivity public class MainActivity extends AppCompatActivity {

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) […]

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

我在使用Android Studio 3.0 RC1初始化工具栏时收到错误:“模糊方法调用”。 我已经使用AppCompatActivity扩展了我的Activity并使用’compileSdkVersion 26’编译我的应用程序。 附上错误的屏幕截图。