Android uper.android.view.inflate 异常
Android uper.android.view.inflate exception
我在 android 列表 activity 中遇到问题。
这是我的 class :
package com.zheek.story;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;
import database.Database;
public class list extends ListActivity{
private Database db;
private ArrayList<String> name = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
db = new Database(this);
db.database();
refresher();
Toast.makeText(this, name.get(1), Toast.LENGTH_LONG).show();
setListAdapter(new listview());
}
////////////////////////////////////////////custom view for list
class listview extends ArrayAdapter<String>{
public listview(){
super(getApplicationContext(),R.layout.viewlist,name);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.viewlist, parent,false);
TextView txt = (TextView) row.findViewById(R.id.txtName);
TextView teedad = (TextView) row.findViewById(R.id.txtName1);
txt.setText(name.get(position));
teedad.setText(name.get(position));
//txt.setTypeface(MainActivity.font);
return row;
}
}
private void refresher(){ /////////refresh list from database
db.open();
int count = db.count();
Log.i("previus for","previus for");
for (int i = 0; i < count; i++) {
name.add(db.show(i,1));
}
db.close();
}
}
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_txt_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
这是每行的自定义布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="86dp"
android:layout_marginTop="16dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/txtName1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/txtName"
android:layout_alignBottom="@+id/txtName"
android:layout_alignParentLeft="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
这个 activity 在 API 19 和更高版本上没有 运行。我 运行 在 API 16 和 运行 上正确.
android.view.InflateException: Binary XML file line #20: Error inflating class android.widget.ListView
尝试使用 Fragment 而不是 Activity。使用 Fragments,您可以在多个屏幕上重复使用布局。
您可以在普通 activity 中使用列表视图,而不是带有 setContentView 的列表activity。这个列表视图应该是可重用的。
我把它们设置为没有操作栏,所以问题解决了。
android:theme="@android:style/Theme.Holo.NoActionBar"
尝试在新项目中更新 android SDK 并检查结果。可能是您的 sdk 无法为 API 创建 19.I 希望它对您有用。
尝试在新项目中更新 android SDK 并检查结果。可能是您的 sdk 无法为 API 创建 19.I 希望它对您有用。
我在 android 列表 activity 中遇到问题。
这是我的 class :
package com.zheek.story;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
import android.widget.Toast;
import database.Database;
public class list extends ListActivity{
private Database db;
private ArrayList<String> name = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
db = new Database(this);
db.database();
refresher();
Toast.makeText(this, name.get(1), Toast.LENGTH_LONG).show();
setListAdapter(new listview());
}
////////////////////////////////////////////custom view for list
class listview extends ArrayAdapter<String>{
public listview(){
super(getApplicationContext(),R.layout.viewlist,name);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater in = getLayoutInflater();
View row = in.inflate(R.layout.viewlist, parent,false);
TextView txt = (TextView) row.findViewById(R.id.txtName);
TextView teedad = (TextView) row.findViewById(R.id.txtName1);
txt.setText(name.get(position));
teedad.setText(name.get(position));
//txt.setTypeface(MainActivity.font);
return row;
}
}
private void refresher(){ /////////refresh list from database
db.open();
int count = db.count();
Log.i("previus for","previus for");
for (int i = 0; i < count; i++) {
name.add(db.show(i,1));
}
db.close();
}
}
这是我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/main_txt_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" >
</ListView>
</RelativeLayout>
这是每行的自定义布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/txtName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="86dp"
android:layout_marginTop="16dp"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium" />
<TextView
android:id="@+id/txtName1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/txtName"
android:layout_alignBottom="@+id/txtName"
android:layout_alignParentLeft="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
这个 activity 在 API 19 和更高版本上没有 运行。我 运行 在 API 16 和 运行 上正确.
android.view.InflateException: Binary XML file line #20: Error inflating class android.widget.ListView
尝试使用 Fragment 而不是 Activity。使用 Fragments,您可以在多个屏幕上重复使用布局。
您可以在普通 activity 中使用列表视图,而不是带有 setContentView 的列表activity。这个列表视图应该是可重用的。
我把它们设置为没有操作栏,所以问题解决了。
android:theme="@android:style/Theme.Holo.NoActionBar"
尝试在新项目中更新 android SDK 并检查结果。可能是您的 sdk 无法为 API 创建 19.I 希望它对您有用。
尝试在新项目中更新 android SDK 并检查结果。可能是您的 sdk 无法为 API 创建 19.I 希望它对您有用。