嘿,我刚刚将我的应用程序升级到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 应用程序,并处理序列化文件。我有一个方法可以将 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) 我正在尝试在我发现的应用程序中添加菜单,如果它扩展 AppCompatActivity 可以工作,但如果它扩展 Activity 则不行。Activity 中没有任何可用的菜单吗?人们说 Activity 是基本的,而 AppCompatActivity 是后来开发的,我应该使用 Activity 而不是 AppCompatActivity 有什么好的理由吗?由于 AppCompatActivity 是默认的,但在我的学习中建议选择 Activity,但我在创建菜单(操作栏)时发现问题,请帮助!
我正在尝试创建一个扩展 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
我的操作栏中有一个菜单项列表.每个项目单击应触发不同的方法.但是从不调用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
我有两个支持片段坐在里面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) 我想尝试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) 我正在尝试为 Flutter 创建一个依赖于使用 AppCompatActivity 的 android 插件(因为它有一个将嵌入 appcompatactivity 作为参数的方法)。
但是,由于我的主要 Activity 扩展了 FlutterActivity,因此我无法同时扩展 AppCompatActivity。我尝试实施它,但由于一些冗余而失败。
有什么办法可以破解这个吗?
谢谢
我已经做了很多尝试以找到解决方案。由于发现了相同的问题,但没有回答我想要的。
<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
嗨,我正在尝试创建一个使用两个不同类的应用程序,我知道我不能在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