标签: appcompatactivity

如何在使用AppCompat v22.1.0时在super.onCreate之前设置ContentView?

嘿,我刚刚将我的应用程序升级到AppCompat v22.1.0并得到了这个例外

Caused by: java.lang.IllegalArgumentException: AppCompat does not support the current theme features
        at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:360) 
        at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:246) 
        at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:106) 
Run Code Online (Sandbox Code Playgroud)

我找到了解决方案.这里/sf/answers/2085305001/

问题仍未解决,因为我在ConnectionWifiEditActivity类中的super.onCreate之后调用了setContentView .

当我改变它时,它会抛出NullPointerException 我如何解决这个问题?

Caused by: java.lang.NullPointerException
            at Client.Activity.connection.ConnectionEditActivity.onResume(ConnectionEditActivity.java:46)
            at Client.Activity.connection.ConnectionWifiEditActivity.onResume(ConnectionWifiEditActivity.java:81)
Run Code Online (Sandbox Code Playgroud)

ConnectionWifiEditActivity

public class ConnectionWifiEditActivity extends ConnectionEditActivity implements OnClickListener
{
    private ConnectionWifi connection;
    private EditText host;
    private EditText port;
    Button scan;
    ListView lv;
    private Toolbar mToolbar;

    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.setContentView(R.layout.connectionwifiedit);
        lv = (ListView) findViewById(android.R.id.list);
        this.connection = (ConnectionWifi) connectionParam;
        mToolbar = (Toolbar) findViewById(R.id.toolbar_actionbar);
        setSupportActionBar(mToolbar); …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat setcontentview appcompatactivity

5
推荐指数
1
解决办法
5996
查看次数

将 Context 与 AppCompatActivity 一起使用

我目前正在开发 Android 应用程序,并处理序列化文件。我有一个方法可以将 Java 对象序列化到带有 Context 参数的文件中。在另一个类中工作时,我可以检索有效的 Context 对象,但是当我在扩展 AppCompatActivity 的类上时,我不太确定该怎么做。我尝试使用 getApplicationContext() 但这仍然为我提供了 Context 的空值。

这是我迄今为止所掌握的基础:

public class BookView extends AppCompatActivity {

private static Context context;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_book);
    Book book = Browse.books.get(getIntent().getIntExtra("index", 0));
    Browse.book = book;
    setUpScreen(book);
    context = getApplicationContext();
}

private void setUpChapters(Book book){

    ListView chapters = (ListView) findViewById(R.id.chapters);
    ChapterAdapter adapter = new ChapterAdapter(this, R.layout.row, book.getChapters());
    chapters.setAdapter(adapter);

    if (context != null) {
        book.serialize(context);
    }
    else {
        System.out.println("Null bookview context");
    }

    chapters.setOnItemClickListener(new AdapterView.OnItemClickListener() { …
Run Code Online (Sandbox Code Playgroud)

android android-context appcompatactivity

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

AppCompatActivity 和 Activity 的区别

我正在尝试在我发现的应用程序中添加菜单,如果它扩展 AppCompatActivity 可以工作,但如果它扩展 Activity 则不行。Activity 中没有任何可用的菜单吗?人们说 Activity 是基本的,而 AppCompatActivity 是后来开发的,我应该使用 Activity 而不是 AppCompatActivity 有什么好的理由吗?由于 AppCompatActivity 是默认的,但在我的学习中建议选择 Activity,但我在创建菜单(操作栏)时发现问题,请帮助!

menu android-activity appcompatactivity

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

无法让 PreferenceFragmentCompat 工作

我正在尝试创建一个扩展 AppCompatActivity 并在其中包含两个片段的 Activity(一个片段位于另一个片段下方 - 仅通过使用 LinearLayout)。我希望第一个片段从 support-v7 库中扩展 PreferenceFragmentCompat 类。

我遵循了谷歌关于 PreferenceFragmentCompat 的简短示例,如https://developer.android.com/reference/android/support/v7/preference/PreferenceFragmentCompat.html所示。

这是我当前的代码:

GroupDetailsActivity.java

public class GroupDetailsActivity extends AppCompatActivity {

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

        GroupDetailsPrefFragment prefFragment = GroupDetailsPrefFragment.newInstance();
        GroupDetailsMembersFragment membersFragment = GroupDetailsMembersFragment.newInstance();

        FragmentManager fm = getSupportFragmentManager();
        fm.beginTransaction()
            .add(R.id.flPrefFragment, prefFragment, GroupDetailsPrefFragment.TAG)
            .add(R.id.flMembersFragment, membersFragment, GroupDetailsMembersFragment.TAG)
            .commit();
    }
}
Run Code Online (Sandbox Code Playgroud)

GroupDetailsPrefFragment .java - 有问题的片段

public class GroupDetailsPrefFragment extends PreferenceFragmentCompat {

    public static final String TAG = "GroupDetailsPrefFragment";

    @Override
    public void onCreatePreferences(Bundle bundle, String s) {
        setPreferencesFromResource(R.xml.group_details_preferences, …
Run Code Online (Sandbox Code Playgroud)

android android-fragments preferencefragment appcompatactivity support-preference

5
推荐指数
1
解决办法
9653
查看次数

onOptionsItemSelected未调用

我的操作栏中有一个菜单项列表.每个项目单击应触发不同的方法.但是从不调用onOptionsItemSelected.

这是在MainActivity中定义操作栏的方式:

public class MainActivity extends AppCompatActivity {
...
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if (id == R.id.action_settings_1) {
            //do something
            return true;
        } else if (id == R.id.action_settings_2) {
            //do something
            return true;
        } else if (id == R.id.action_settings_1) {
            //do something
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
...
}
Run Code Online (Sandbox Code Playgroud)

这是操作栏菜单布局menu_main:

<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="com.example.MainActivity">
    <item
        android:id="@+id/action_settings_1"
        android:orderInCategory="1"
        android:title="Item 1"
        app:showAsAction="never" /> …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-actionbar appcompatactivity

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

如何在多个片段中设置SupportSupportBar()?

我有两个支持片段坐在里面AppCompatActivity.根据设计,它们每个都有独特的工具栏和选项菜单.在AppCompatActivity没有工具栏,因为这些都包含在每个片段它的布局.

在每个片段中,我setHasOptionsMenu(true);在onCreate()中.

在onCreateView()中,我调用的((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);是工具栏是绑定到xml工具栏元素的对象.

onCreateOptionsMenu(),我首先调用super,然后调用menu.clear(),最后使用inflater.inflate(R.menu.searchbar_menu,menu)来扩展菜单;

失败的地方在于调用((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);这两个片段.在这样做时,选项将仅出现在第二个片段上而不出现在第一个片段上.如果我只在一个片段中调用它,则选项只在那个片段中按预期显示.当然,如果我不打电话,它们根本就不会出现.

这是我的代码.两个片段基本相同,但菜单膨胀除外:

public class FeedFragment extends Fragment implements FeedView{

    @BindView(R.id.toolbar)
    Toolbar toolbar;

    FeedPresenter presenter;

    static final String TAG = "FEED_FRAGMENT";

    /*
     * Some boilerplate fragment setup code
     */

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_feed, container, false);
        ButterKnife.bind(this, view);
        ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar);
        setupToolar();
        return view;
    }

    @Override
    public void onCreateOptionsMenu(Menu …
Run Code Online (Sandbox Code Playgroud)

android android-fragments appcompatactivity

5
推荐指数
1
解决办法
820
查看次数

'错误:无法解决:com.android.support:appcompat-v7:29.0.1'

我想尝试Intellij平台进行android开发,但是即使重新启动它也显示gradle失败。请帮忙。

我试图调整线

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

到其他版本,但无济于事。

这是我的模块级gradle

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 29
    buildToolsVersion "29.0.1"
    defaultConfig {
        applicationId "com.example.myapplication"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:29.+'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Run Code Online (Sandbox Code Playgroud)

这是我的项目级别Gradle

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    repositories {
        google() …
Run Code Online (Sandbox Code Playgroud)

android intellij-idea build-tools gradle appcompatactivity

5
推荐指数
1
解决办法
1285
查看次数

Flutter:扩展 FlutterActivity 和 AppCompatActivity

我正在尝试为 Flutter 创建一个依赖于使用 AppCompatActivity 的 android 插件(因为它有一个将嵌入 appcompatactivity 作为参数的方法)。

但是,由于我的主要 Activity 扩展了 FlutterActivity,因此我无法同时扩展 AppCompatActivity。我尝试实施它,但由于一些冗余而失败。

有什么办法可以破解这个吗?

谢谢

android appcompatactivity flutter

5
推荐指数
1
解决办法
1424
查看次数

预期的接收器类型,但收到了android.support.v7.widget.TintContextWrapper

我已经做了很多尝试以找到解决方案。由于发现了相同的问题,但没有回答我想要的。

我有以下XML文件:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:id="@+id/add_appointment_parent_layout"
    tools:context="com.potionowl.app.activity.AppointmentAddActivity">

    <include layout="@layout/layout_toolbar"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:orientation="vertical"
        android:padding="@dimen/padding_small"
        android:layout_margin="@dimen/padding_medium"
        android:layout_height="match_parent">

        <android.support.v7.widget.AppCompatSpinner
            android:id="@+id/add_appointment_doctor_spinner"
            android:layout_width="match_parent"
            android:prompt="@string/string_select_doctor_patient"
            android:spinnerMode="dialog"
            android:layout_margin="@dimen/padding_medium"
            android:layout_height="wrap_content"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:orientation="horizontal"
            android:layout_margin="@dimen/padding_medium"
            android:layout_height="wrap_content"
            android:baselineAligned="false">

            <android.support.design.widget.TextInputLayout
                android:id="@+id/add_appointment_date_title"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_margin="@dimen/padding_very_small"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/add_appointment_date_text"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/string_add_app_date_for_appointment"
                    android:focusable="false"
                    android:onClick="PickDate"
                    android:singleLine="true"
                    android:inputType="datetime"/>
            </android.support.design.widget.TextInputLayout>

            <android.support.design.widget.TextInputLayout
                android:id="@+id/add_appointment_time_title"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_margin="@dimen/padding_very_small"
                android:layout_height="wrap_content">

                <EditText
                    android:id="@+id/add_appointment_time_text"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="@string/string_add_app_time_for_appointment"
                    android:focusable="false"
                    android:onClick="PickTime"
                    android:singleLine="true"
                    android:inputType="datetime"/>
            </android.support.design.widget.TextInputLayout>
        </LinearLayout>

        <android.support.design.widget.TextInputLayout
            android:id="@+id/add_appointment_symptoms_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="@dimen/padding_medium">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/add_appointment_symptoms_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:maxLines="5"
                android:gravity="start"
                android:hint="@string/string_add_app_symptoms"
                android:lines="5"/>
        </android.support.design.widget.TextInputLayout> …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-activity appcompatactivity

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

一起使用Fragment和AppCompatActivity类

嗨,我正在尝试创建一个使用两个不同类的应用程序,我知道我不能在Java中使用带有两个类的扩展.我如何将下面的代码分成两个不同的类,以便可以扩展Fragment和另一个AppCompatActivity?

package com.example.oliver.myapplication;

import android.support.v4.app.Fragment;
import android.app.AlertDialog;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView;

import java.util.Random;


public class MyFragment extends AppCompatActivity, Fragment {

    Button b, b2;
    MediaPlayer nice, burp;
    ImageButton img;
    int n;
    MediaPlayer [] s = new MediaPlayer[6];
    AlertDialog.Builder adb;

    public static MyFragment newInstance() {
        MyFragment fragment = new MyFragment();
        return fragment;
    }

        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.my_fragment, container, false); …
Run Code Online (Sandbox Code Playgroud)

java android android-fragments android-studio appcompatactivity

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