标签: appcompatactivity

在库22中使用什么而不是getSupportActionBar()?

我的代码中有一行标记为黄色:

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

安装appcompat-v7:22.1后, 它显示了一个提示:

"方法调用可能会产生java.lang.nullpointerexception".

应该用什么来代替getSupportActionBar()

android toolbar appcompatactivity

4
推荐指数
1
解决办法
6400
查看次数

高度与minHeight工具栏

我最近更新到AppCompatActivity并切换ActionBarToolBar.

当我检查xml时,我发现了这两个属性 -

android:layout_height="wrap_content"
Run Code Online (Sandbox Code Playgroud)

android:minHeight="?attr/actionBarSize"
Run Code Online (Sandbox Code Playgroud)

这两个属性有什么区别?为什么layout_height设置wrap_content在ToolBar文档中?

是否有必要同时使用这两个属性?

java android material-design android-toolbar appcompatactivity

3
推荐指数
1
解决办法
4688
查看次数

AppCompatActivity自定义ActionBar按钮不会出现在Android 4.1.2上

它在5.1上工作正常,但在4.1.2上没有

我错过了什么?

这是活动xml:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:myApp="http://schemas.android.com/apk/res-auto">
    <item android:id="@+id/transfer"
        android:title="@string/transfer"
        android:icon="@drawable/ic_transfer"
        myApp:showAsAction="always" />
    <item android:id="@+id/refresh"
        android:title="@string/refresh"
        android:icon="@drawable/ic_refresh"
        myApp:showAsAction="always" />
    <item android:id="@+id/about"
        android:title="@string/about"
        android:icon="@android:drawable/ic_menu_info_details"
        android:orderInCategory="100"
        myApp:showAsAction="never" />
    <item android:id="@+id/help"
        android:title="@string/title_activity_help"
        android:icon="@android:drawable/ic_menu_info_details"
        android:orderInCategory="101"
        myApp:showAsAction="never" />
    <item android:id="@+id/settings"
        android:title="@string/settings"
        android:icon="@android:drawable/ic_menu_info_details"
        android:orderInCategory="102"
        myApp:showAsAction="never" />
    <item android:id="@+id/search"
        android:title="@string/search"
        android:icon="@android:drawable/ic_menu_info_details"
        android:orderInCategory="103"
        myApp:showAsAction="never" />
    <item android:id="@+id/logout"
        android:title="@string/logout"
        android:icon="@android:drawable/ic_menu_info_details"
        android:orderInCategory="104"
        myApp:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)

这是我的活动类(扩展了另一个扩展AppCompatActivity的活动):

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.my_activity, menu);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

我使用以下appcompat库:

'com.android.support:appcompat-v7:22.2.0'
Run Code Online (Sandbox Code Playgroud)

android android-actionbar android-4.1-jelly-bean appcompatactivity

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

如何使用Fabric的AppCompatActivity获取时间轴?

我正在关注fabric的文档以获得时间表.如果我根据他们的指令使用ListActivity,它工作正常.但我想添加自己的工具栏,所以我使用了AppCompatActivity.这是我的java文件的一部分:

public class TimelineActivity extends AppCompatActivity{

public static final String QUERY = "QUERY";

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

    Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    SearchTimeline searchTimeline = new SearchTimeline.Builder()
            .query(getIntent().getStringExtra(QUERY))
            .build();
    final TweetTimelineListAdapter adapter = new TweetTimelineListAdapter.Builder(this)
            .setTimeline(searchTimeline)
            .build();
    ListView tweetList = (ListView)findViewById(R.id.tweet_list);
    tweetList.setAdapter(adapter);

}
Run Code Online (Sandbox Code Playgroud)

这是我的xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".TimeLineActivity">


    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            app:layout_scrollFlags="scroll|enterAlways"/>

    </android.support.design.widget.AppBarLayout>


    <LinearLayout
        android:layout_below="@id/appbar"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <TextView android:id="@id/android:empty" …
Run Code Online (Sandbox Code Playgroud)

android twitter-fabric appcompatactivity

3
推荐指数
1
解决办法
202
查看次数

Material Design,AppCompat和向后兼容性

我正在尝试更好地理解使用Material Design的原则(我是这个领域的新手,并且一直在阅读文档和教程,但主题对我来说仍然有点模糊),我会很高兴的一些帮助.到目前为止我尝试过的是两个文件夹(值和值-21),每个文件夹都有一个styles.xml文件 -

价值观/ styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"></style>
Run Code Online (Sandbox Code Playgroud)

值-V21/styles.xml:

<style name="AppTheme" parent="android:Theme.Material.NoActionBar"></style>
Run Code Online (Sandbox Code Playgroud)

问题从我尝试使用从AppCompatActivity继承的活动开始(据我所知,这是我需要做的事情,以便在Lollipop之前支持向设备的向后兼容性,例如Material Design?我是否正确?这里有更多信息大).如果我这样做,该应用程序将无法在具有API 21或更高版本的设备上运行,因为"AppTheme"必须从AppCompat继承.

我可以做的就是创建一个继承自AppCompat的基本主题,然后使两个文件中的样式继承该基本主题...但是我不再继承Material了....这让我想到了这个问题 -

Material Design只是一个给定的主题吗?如果是这样,我该如何解决我的问题?使用AppCompatActivity在这里完成了什么?或者,Material Design本质上只是一套我应该遵循的规则和原则?如果是这样,为什么我们需要Theme.Material.*呢?我会很高兴有任何关于这个问题的人可以给我的额外信息.

谢谢!

android backwards-compatibility material-design appcompatactivity

3
推荐指数
1
解决办法
1353
查看次数

AppCompat的AccountAuthenticatorActivity

我正在按照教程制作验证器:http://blog.udinic.com/2013/04/24/write-your-own-android-authenticator/

登录Activity需要扩展AccountAuthenticatorActivity,问题从这里开始:AccountAuthenticatorActivity扩展常规Activity而不是AppCompatActivity.

Activity在AppCompat中使用常规会导致ActivityActionBar.我想使用AccountAuthenticatorActivity和有一个ActionBar.

android android-appcompat android-authenticator android-support-library appcompatactivity

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

扩展 AppCompatActivity 会导致应用程序崩溃

我正在创建一个简单的应用程序来测试AppCompat,当我扩展AppCompatActivity应用程序崩溃时,当我运行应用程序时AppCompat(扩展android.app.Activity并且一切保持不变),

MainActivity extends Activity- 有效 MainActivity extends AppCompat Activity- 崩溃

测试 android 4.4

日志猫:

------------------------------------------------

05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 0
05-01 23:03:44.916 E/dalvikvm(23031): heapsize Dalvik_dalvik_system_VMRuntime_nativeMinimumHeapSize 15301176
05-01 23:03:44.966 E/dalvikvm(23031): Could not find class 'android.arch.core.internal.FastSafeIterableMap', referenced from method android.arch.lifecycle.LifecycleRegistry.<init>
05-01 23:03:44.986 E/AndroidRuntime(23031): FATAL EXCEPTION: main
05-01 23:03:44.986 E/AndroidRuntime(23031): Process: com.android.xDrawer, PID: 23031
05-01 23:03:44.986 E/AndroidRuntime(23031): java.lang.NoClassDefFoundError: android.arch.core.internal.FastSafeIterableMap
05-01 23:03:44.986 E/AndroidRuntime(23031):     at android.arch.lifecycle.LifecycleRegistry.<init>(LifecycleRegistry.java:59)
05-01 23:03:44.986 E/AndroidRuntime(23031):     at android.support.v4.app.SupportActivity.<init>(SupportActivity.java:47)
05-01 23:03:44.986 E/AndroidRuntime(23031): …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat appcompatactivity

3
推荐指数
1
解决办法
1977
查看次数

Jetpack compose 中的 AppCompatActivity 而不是 ComponentActivity

我想datePicker在 Jetpack compose 中单击按钮打开对话框。
为此,我在按钮的onClick操作中使用以下代码。

val context = LocalContext.current
Button(onClick = {
    (context as AppCompatActivity).let {
        val picker = MaterialDatePicker.Builder.datePicker().build()
        picker.show(it.supportFragmentManager, picker.toString())
        picker.addOnPositiveButtonClickListener {
            // some code
        }
    }
})
Run Code Online (Sandbox Code Playgroud)

如果我使用的是ComponentActivity,supportFragmentManager则不受支持。
可以从 扩展活动AppCompatActivity吗?
或者有没有其他方法,如果上述解决方案不正确,我可以得到解决方案?

android appcompatactivity android-jetpack-compose

3
推荐指数
1
解决办法
414
查看次数

Appcompact活动和动作栏活动之间的差异

在Android中,从扩展一个类之间的主要区别是什么AppCompatActivityActionBarActivity?这些课程有何不同?

android android-appcompat android-activity appcompatactivity

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

AndroidX:设置 Enter 键以验证 EditTextPreference 对话框

我正在尝试使用AndroidX制作首选项屏幕,但遇到了一个小问题......

当我使用虚拟键盘上的“确定”按钮验证输入时,首选项未验证。(键盘被隐藏了,仅此而已......)

使用 AndroidX,我们无法再覆盖showDialog()...EditTextPreference并且我找不到另一种方法来访问该对话框以将其关闭。

总之,我希望:虚拟键盘上按钮的 DONE 操作验证 AlertDialog。

在此输入图像描述

这是我的示例代码:

XML文件

<PreferenceScreen xmlns:app="http://schemas.android.com/apk/res-auto">
    <EditTextPreference
        app:key="pref_1"
        app:title="Test"
        app:useSimpleSummaryProvider="true" /> 
</PreferenceScreen> 
Run Code Online (Sandbox Code Playgroud)

偏好活动

public class MySettingsActivity extends AppCompatActivity implements
        PreferenceFragmentCompat.OnPreferenceStartFragmentCallback {

    [...]

    public static class HeaderFragment extends PreferenceFragmentCompat {
        @Override
        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
            setPreferencesFromResource(R.xml.header_preferences, rootKey);

            EditTextPreference pref1 = getPreferenceManager().findPreference("pref_1");
            pref1.setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
                @Override
                public void onBindEditText(@NonNull EditText editText) {
                    editText.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
                    editText.setImeOptions(EditorInfo.IME_ACTION_DONE);
                }
            });
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

android edittextpreference imeoptions appcompatactivity androidx

2
推荐指数
1
解决办法
1151
查看次数