所以我收到此错误消息:
...
android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown>
Caused by: android.view.InflateException: Binary XML file line #9: Error inflating class <unknown>
Caused by: java.lang.reflect.InvocationTargetException
...
在MainActivity.java
public void onWindowFocusChanged(boolean hasFocus) {
...
loadBalanceTable(inThePast, inTheFuture);
...
}
private void loadBalanceTable(Calendar startDate, Calendar endDate) {
AsyncBalanceLoader asyncBalanceLoader = new AsyncBalanceLoader(getApplicationContext(), this);
asyncBalanceLoader.execute(startDate, endDate);
}
AsyncBalanceLoader.java
public class AsyncBalanceLoader extends AsyncTask<Calendar, Integer, ArrayList<Balance>> {
private Context context;
private AppCompatActivity activity;
private ListView balanceView;
public AsyncBalanceLoader(Context ctx, AppCompatActivity act) {
context = ctx;
activity = act;
}
@Override
protected ArrayList<Balance> doInBackground(Calendar... date) {
...
ArrayList<Balance> arrayListBalance = new ArrayList<Balance>();
...
return arrayListBalance;
}
@Override
protected void onPostExecute(ArrayList<Balance> arrayListBalance) {
BalanceArrayAdapter balanceArrayAdapter = new BalanceArrayAdapter(context, arrayListBalance);
balanceView.setAdapter(balanceArrayAdapter);
}
}
BalanceArrayAdapter.java
public class BalanceArrayAdapter extends ArrayAdapter {
public BalanceArrayAdapter(Context context, ArrayList<Balance> balance) {
super(context, 0, balance);
}
@NonNull
@Override
public View getView(int position, View convertView, ViewGroup parent) {
...
if (convertView == null) {
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.single_balance_line, parent, false);
}
...
return convertView;
}
}
BalanceArrayAdapter.java上线时出现问题
convertView = LayoutInflater.from(getContext()).inflate(
R.layout.single_balance_line, parent, false);
当所有这些都在用户界面线程上完成时,我没有遇到任何问题。
对正在发生的事情有什么想法吗? 非常感谢!
最佳答案
我通过剖析错误代码找出了导致错误的原因
...
android.view.InflateException: Binary XML file line #9: Binary XML file line #9: Error inflating class <unknown>
...
奇怪的是,当整个过程在 UI 线程下运行时(在程序的早期版本上),这个 xml 布局文件会正确地膨胀;但是,当它在 AsyncTask
扩展类 AsyncBalanceLoader
的 onPostExecute()
上膨胀时,尽管 UI 线程也是如此,但我收到了错误。这是有问题的 xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1">
...
</LinearLayout>
...
</LinearLayout>
</LinearLayout>
第二个 LinearLayout
不执行任何操作,第一个(也称为 Root View )仅包含一个 subview ,违背了 LinearLayout
组 View 的目的。
所以,我真的不知道所说的“错误”在哪里,但这就是原因。
我将其更改为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
<LinearLayout
android:orientation="horizontal"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_weight="1">
...
</LinearLayout>
...
</LinearLayout>
希望稍后有人能解释真正原因的深层原因。
关于java - 二进制 XML 文件行 # : Error inflating class <unknown> using an ArrayAdapter and AsyncTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40541274/