android - 二进制 XML 文件第 24 行:膨胀类 android.widget.Spinner 时出错
问题描述
我是 android 新手,制作了一个在 Xperia z2 和 Samsung j2 上运行良好的转换器应用程序,但是当我尝试在 Xperia z1 上测试它时它崩溃了。该应用程序根本没有启动。我浏览了很多帖子,但无法解决它给我这个错误的问题:
java.lang.RuntimeException: Unable to start activity
ComponentInfo{com.example.sreyash.uconverter/com.example.sreyash.uconverter
.MainActivity}: android.view.InflateException: Binary XML file line #24:
Error inflating class android.widget.Spinner at
android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2237)
android.view.LayoutInflater.createView (LayoutInflater.java:620)
com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView
(PhoneLayoutInflater.java:56)
android.view.LayoutInflater.onCreateView (LayoutInflater.java:669)
android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:694)
android.view.LayoutInflater.rInflate (LayoutInflater.java:755)
android.view.LayoutInflater.inflate (LayoutInflater.java:492)
android.view.LayoutInflater.inflate (LayoutInflater.java:397)
android.view.LayoutInflater.inflate (LayoutInflater.java:353)
com.android.internal.policy.impl.PhoneWindow.setContentView
(PhoneWindow.java:297)
android.app.Activity.setContentView (Activity.java:1929)
com.example.sreyash.uconverter.MainActivity.onCreate (MainActivity.java:33)
android.app.Activity.performCreate (Activity.java:5231)
android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087)
android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2201)
android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2286)
android.app.ActivityThread.access$800 (ActivityThread.java:144)
android.app.ActivityThread$H.handleMessage (ActivityThread.java:1246)
android.os.Handler.dispatchMessage (Handler.java:102)
android.os.Looper.loop (Looper.java:212)
android.app.ActivityThread.main (ActivityThread.java:5135)
java.lang.reflect.Method.invokeNative (Method.java)
java.lang.reflect.Method.invoke (Method.java:515)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run
(ZygoteInit.java:877)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:693)
dalvik.system.NativeStart.main (NativeStart.java)
这是指向的代码错误:
<android.support.constraint.ConstraintLayout
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"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/converter_background"
tools:context=".MainActivity">
<ImageButton
android:id="@+id/length"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_marginBottom="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:onClick="onClick"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.549"
android:background="@drawable/lengths_symbol" />
<Spinner
android:id="@+id/spinner"
android:layout_width="150dp"
android:layout_height="30dp"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp"
android:entries="@android:color/background_light"
android:popupBackground="@color/colorPrimaryDark"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.949"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.110000014" />
这是主要活动;
public class MainActivity extends Activity implements
AdapterView.OnItemSelectedListener{
int mode_flag;
ArrayAdapter<CharSequence> adapter1;
ArrayAdapter<CharSequence> adapter2;
Spinner spinner1;
Spinner spinner2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner1=findViewById(R.id.spinner);
spinner2=findViewById(R.id.spinner2);
mode_flag=1;
set_adapter(R.array.Length);
Lenght.setBackgroundResource(R.drawable.lengths_symbol_clicked);
Title.setText(R.string.Lenght_title);
conversion_mode="Length";
Clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(!input.isEmpty()) {
input = input.substring(0, input.length() - 1);
Log.d("back", ""+input);
inputview.setText(input);
}
Conversion();
}
});
Clear.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false;
}
});
}
public void set_adapter(int source){
adapter1=ArrayAdapter.createFromResource(this,
source,android.R.layout.simple_spinner_item);
adapter2=ArrayAdapter.createFromResource(this,
source,android.R.layout.simple_spinner_item);
adapter1.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
adapter2.setDropDownViewResource
(android.R.layout.simple_spinner_dropdown_item);
spinner1.setAdapter(adapter1);
spinner1.setOnItemSelectedListener(this);
spinner2.setAdapter(adapter2);
spinner2.setOnItemSelectedListener(this);
}
任何帮助将不胜感激
解决方案
First Thing android:entries 属性用于将数据绑定到微调器,而不是用于设置颜色。
XML 方法
首先将国家数组创建到 String.xml 文件中
<string-array name="country_names">
<item>India</item>
<item>United States</item>
<item>Indonesia</item>
<item>France</item>
<item>Italy</item>
<item>Singapore</item>
<item>New Zealand</item>
</string-array>
您应该将 android:entries="@android:color/background_light" 更改为 android:entries="@array/country_names"
JAVA代码方法
您可以将其创建到 Java 代码中
使用 Contry 创建 ArrayList 并使用 ArrayAdapter 使用 Spinner 绑定 Array。
ArrayList<String> contryList=new ArrayList<String>();
contryList.add("India");
contryList.add("United States");
contryList.add("Other");
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, contryList);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(dataAdapter);
推荐阅读
- amazon-web-services - 使用 JDBC 将数据从 AWS S3 存储桶导出到 MySql RDS 实例
- hyperledger-fabric - 如何在 Hyperledger peer 中监控参与节点的网络性能?
- f# - 将浮点数和向量相乘?所以 val scale : float -> float*float -> float*float?
- python - 如何在python的数据框中获取函数(def)输出并合并多个数据框
- angularjs - Node-Red 仪表板模板 UI - 带有 ng-repeat 的 AngularJS Bootstrap Carousel
- c++ - 使用模板而不是虚拟方法的管道模式
- javascript - 向 Date() 添加 50 分钟
- java - 使用相同的 Random a = new Random 初始化 2 个随机变量
- html - 为什么我的 .sticky-top 类在 Bootstrap 4 中不起作用?
- mysql - Mysql:根据最近的时间戳查询连接表数据