Это мой первый вопрос, насколько я помню, поэтому, пожалуйста, держите меня в покое, если я пропустил подобный вопрос, на который был дан ответ.
Моя проблема:
Я пытаюсь расширить LinearLayout для использования в качестве составного компонента. Я следовал этому уроку:
ссылка
Что кажется довольно прямым. Однако, когда я пытаюсь надуть мой компонент, он постоянно терпит неудачу,
ошибка, которую я получаю от logCat, заключается в том, что мой класс не может быть найден. Мне кажется странным, что, насколько я вижу, Android ищет свой компонент среди своих собственных компонентов (я не уверен насчет правильной формулировки здесь, см. Ниже).
Код, который я написал, выглядит следующим образом:
main (текущая деятельность):
//just the ordinary autogenerated eclipse code...
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
Моя расширенная линейная раскладка:
public class DialPadView extends LinearLayout {
public DialPadView(Context ctx, AttributeSet attr) {
super(ctx, attr);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
((Activity)getContext()).getLayoutInflater().inflate(R.layout.dialpadview, this);
}
}
Мой файл макета main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<whalenut.testinflate.DialPadView
android:id="@+id/mydialpad"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/></LinearLayout>
и, наконец, мой файл dialpadview.xml для использования с моим составным компонентом:
<?xml version="1.0" encoding="utf-8"?>
<DialPadView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="test"/>
</DialPadView>
конечно все мои файлы классов находятся в пакете whalenut.testinflate
logCat говорит это:
java.lang.RuntimeException: Невозможно запустить действие. ComponentInfo {whalenut.testinflate / whalenut.testinflate.TestInflateActivity}: android.view.InflateException: строка двоичного XML-файла # 2: Ошибка надувания класса DialPadView
...
Вызывается: android.view.InflateException: строка двоичного XML-файла # 2: Ошибка надувания класса DialPadView
...
Вызывается: java.lang.ClassNotFoundException: android.view.DialPadView в загрузчике dalvik.system.PathClassLoader [/data/app/whalenut.testinflate-2.apk]
Пожалуйста, если вы, ребята, можете помочь мне понять, почему Далвик (?) Ищет мой класс в пакете android.view вместо whalenut.testinflate , когда я дал полностью квалифицированное имя класса в xml-файле, потому что он не находит там для начала?
Надеюсь, я был достаточно ясен в своем обращении. Короче говоря, почему я не могу, или, вернее, как накачать расширенный макет в Android?