Java 二进制XML文件行#12:膨胀类com.android.phone91.DialPadView时出错
我在setContentView(R.layout.home)上遇到错误这一行。因为我第一次面对这个问题,不知道如何解决它。它似乎是在设计问题,但不知道它是什么 这是我的密码Java 二进制XML文件行#12:膨胀类com.android.phone91.DialPadView时出错,java,android,xml,performance,Java,Android,Xml,Performance,我在setContentView(R.layout.home)上遇到错误这一行。因为我第一次面对这个问题,不知道如何解决它。它似乎是在设计问题,但不知道它是什么 这是我的密码 import java.util.regex.Matcher; import java.util.regex.Pattern; import android.content.Intent; import android.os.Bundle; import android.util.L
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.actionbarsherlock.app.SherlockActivity;
public class DialerActivity extends SherlockActivity{
TextView number;
Button call;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.e("Dialer activity", "Dilaer Activity");
**setContentView(R.layout.home);**
number = (TextView)findViewById(R.id.displayNumber);
call = ((Button)findViewById(R.id.buttonDial));
}
}
以下是xml:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@android:color/white"
android:orientation="vertical" >
<com.android.phone91.DialPadView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="#ffffff" />
<Button
android:id="@+id/buttonDial"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:layout_marginLeft="40dp"
android:layout_marginRight="40dp"
android:layout_marginBottom="20dp"
android:text="Call"
android:textColor="@android:color/white"
android:background="@drawable/button_background"
android:gravity="center" >
</Button>
</LinearLayout>
</ScrollView>
这里是Logcat:
12-12 16:56:23.921: E/AndroidRuntime(25644): FATAL EXCEPTION: main
12-12 16:56:23.921: E/AndroidRuntime(25644): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.phone91/com.android.phone91.DialerActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class com.android.phone91.DialPadView
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.access$600(ActivityThread.java:151)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.os.Handler.dispatchMessage(Handler.java:99)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.os.Looper.loop(Looper.java:155)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.main(ActivityThread.java:5520)
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Method.invokeNative(Native Method)
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Method.invoke(Method.java:511)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
12-12 16:56:23.921: E/AndroidRuntime(25644): at dalvik.system.NativeStart.main(Native Method)
12-12 16:56:23.921: E/AndroidRuntime(25644): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.android.phone91.DialPadView
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:324)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:119)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.actionbarsherlock.app.SherlockActivity.setContentView(SherlockActivity.java:218)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.phone91.DialerActivity.onCreate(DialerActivity.java:24)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.Activity.performCreate(Activity.java:5066)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
12-12 16:56:23.921: E/AndroidRuntime(25644): ... 11 more
12-12 16:56:23.921: E/AndroidRuntime(25644): Caused by: java.lang.reflect.InvocationTargetException
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Constructor.constructNative(Native Method)
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.createView(LayoutInflater.java:587)
12-12 16:56:23.921: E/AndroidRuntime(25644): ... 24 more
12-12 16:56:23.921: E/AndroidRuntime(25644): Caused by: java.lang.ClassCastException: com.android.phone91.DialerActivity cannot be cast to com.android.phone91.MainActivity
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.phone91.DialPadView.<init>(DialPadView.java:28)
12-12 16:56:23.921: E/AndroidRuntime(25644): ... 27 more
12-12 16:56:23.921:E/AndroidRuntime(25644):致命异常:main
12-12 16:56:23.921:E/AndroidRuntime(25644):java.lang.RuntimeException:无法启动活动组件信息{com.android.phone91/com.android.phone91.DialerActivity}:android.view.InflateException:二进制XML文件行#12:膨胀类com.android.phone91.DialPadView时出错
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.app.ActivityThread.access$600(ActivityThread.java:151)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于android.os.Handler.dispatchMessage(Handler.java:99)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.os.Looper.loop(Looper.java:155)上
12-12 16:56:23.921:E/AndroidRuntime(25644):位于android.app.ActivityThread.main(ActivityThread.java:5520)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于java.lang.reflect.Method.Invokenactive(本机方法)
12-12 16:56:23.921:E/AndroidRuntime(25644):在java.lang.reflect.Method.invoke(Method.java:511)
12-12 16:56:23.921:E/AndroidRuntime(25644):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
12-12 16:56:23.921:E/AndroidRuntime(25644):在dalvik.system.NativeStart.main(本机方法)
12-12 16:56:23.921:E/AndroidRuntime(25644):由以下原因引起:android.view.InflateException:二进制XML文件行#12:错误:对com.android.phone91.DialPadView类进行充气
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.createView(LayoutInflater.java:613)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.inflate(LayoutInflater.java:489)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:324)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:119)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于com.actionbarsherlock.app.SherlockActivity.setContentView(SherlockActivity.java:218)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于com.android.phone91.DialerActivity.onCreate(DialerActivity.java:24)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.app.Activity.performCreate(Activity.java:5066)上
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
12-12 16:56:23.921:E/AndroidRuntime(25644):。。。还有11个
12-12 16:56:23.921:E/AndroidRuntime(25644):由以下原因引起:java.lang.reflect.InvocationTargetException
12-12 16:56:23.921:E/AndroidRuntime(25644):位于java.lang.reflect.Constructor.constructNative(本机方法)
12-12 16:56:23.921:E/AndroidRuntime(25644):位于java.lang.reflect.Constructor.newInstance(Constructor.java:417)
12-12 16:56:23.921:E/AndroidRuntime(25644):在android.view.LayoutInflater.createView(LayoutInflater.java:587)
12-12 16:56:23.921:E/AndroidRuntime(25644):。。。还有24个
12-12 16:56:23.921:E/AndroidRuntime(25644):原因:java.lang.ClassCastException:com.android.phone91.DialerActivity无法强制转换为com.android.phone91.MainActivity
12-12 16:56:23.921:E/AndroidRuntime(25644):在com.android.phone91.DialPadView。(DialPadView.java:28)
12-12 16:56:23.921:E/AndroidRuntime(25644):。。。还有27个
传递给DialPadView
的context
是一个DialerActivity
,但您试图将其强制转换为main活动
通常,视图不应依赖于它们所显示的活动。如果您需要编写这样的代码,请后退一步,重新考虑设计。在您的情况下,您只需要一个上下文
,而不是一个特定的活动
-所有hactivity
的使用都是在DialPadView
构造函数(第28行)中将其用作上下文强制转换异常的地方-请将其包含在问题中。@laalto Done.另外,我在其他活动中使用home.xml,效果很好。非常感谢您,但我可以再解释一下,我如何解决它,因为我没有在拨号板视图中的任何位置传递上下文只需将hactivity
全部删除并使用getContext()
在视图中需要上下文的位置。
12-12 16:56:23.921: E/AndroidRuntime(25644): FATAL EXCEPTION: main
12-12 16:56:23.921: E/AndroidRuntime(25644): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.phone91/com.android.phone91.DialerActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class com.android.phone91.DialPadView
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2355)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2391)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.access$600(ActivityThread.java:151)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1335)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.os.Handler.dispatchMessage(Handler.java:99)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.os.Looper.loop(Looper.java:155)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.main(ActivityThread.java:5520)
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Method.invokeNative(Native Method)
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Method.invoke(Method.java:511)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)
12-12 16:56:23.921: E/AndroidRuntime(25644): at dalvik.system.NativeStart.main(Native Method)
12-12 16:56:23.921: E/AndroidRuntime(25644): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.android.phone91.DialPadView
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.createView(LayoutInflater.java:613)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.rInflate(LayoutInflater.java:749)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:324)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:119)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.actionbarsherlock.app.SherlockActivity.setContentView(SherlockActivity.java:218)
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.phone91.DialerActivity.onCreate(DialerActivity.java:24)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.Activity.performCreate(Activity.java:5066)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1101)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2311)
12-12 16:56:23.921: E/AndroidRuntime(25644): ... 11 more
12-12 16:56:23.921: E/AndroidRuntime(25644): Caused by: java.lang.reflect.InvocationTargetException
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Constructor.constructNative(Native Method)
12-12 16:56:23.921: E/AndroidRuntime(25644): at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
12-12 16:56:23.921: E/AndroidRuntime(25644): at android.view.LayoutInflater.createView(LayoutInflater.java:587)
12-12 16:56:23.921: E/AndroidRuntime(25644): ... 24 more
12-12 16:56:23.921: E/AndroidRuntime(25644): Caused by: java.lang.ClassCastException: com.android.phone91.DialerActivity cannot be cast to com.android.phone91.MainActivity
12-12 16:56:23.921: E/AndroidRuntime(25644): at com.android.phone91.DialPadView.<init>(DialPadView.java:28)
12-12 16:56:23.921: E/AndroidRuntime(25644): ... 27 more
hactivity = (MainActivity) context;