Android Homescreen Project, Runtimeexception
-
13-10-2019 - |
Вопрос
Я разработал Homestreen Android, код кажется правильным, но когда я запускаю проект, я получаю следующую ошибку:
java.lang.RuntimeException:
Unable to instantiate activity ComponentInfo{com.matthieu.launcher/
com.matthieu.launcher.DragableSpace}:
java.lang.InstantiationException: com.matthieu.launcher.DragableSpace
Вот полный журнал: http://pastebin.com/iytyw2w6
Код прямо из запуска Android.
Dragablespace: http://pastebin.com/jpwdtfpf
Основная деятельность:
public class MainActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
DragableSpace space = new DragableSpace(this.getApplicationContext());
setContentView(space);
}
}
attr.xml В папке значений:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="DragableSpace">
<attr name="default_screen" format="integer"/>
</declare-styleable>
</resources>
Три XML -файла initial_screen, Левый_SCREEN а также right_screen, у всех есть тот же код, кроме идентификатора:
<LinearLayout android:id="@+id/center"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
</LinearLayout>
Манифест:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.matthieu.launcher"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Есть идеи, как это исправить?
Решение
Был быстрым взглядом на код, как сейчас. NullPointerException в строке 169 DragableSpace, из -за отсутствия представления ребенка - исправьте это, добавив представление ребенка в MainActivity:
TextView child = new TextView(this);
child.setText("This is a Test");
space.addView(child);
Так что теперь код запускает и регистрирует события сенсорных событий для logcat, но, кажется, ничего не происходит (я думаю, вам нужны 3 пространства, которые можно перетаскивать и перемещать на экране) - некоторые начальные проблемы, я думаю, значение snap_velocity 1000 кажется Немного высоко для меня для некоторых жестов перетаскивания, ни один из файлов XML, не используется, не используется, и если текущий «экран» - это полная ширина и высота устройства, куда его перетаскивают?
Обновлено: добавьте макет XML предыдущего сообщения в качестве main.xml:
<?xml version="1.0" encoding="utf-8"?>
Теперь, в MainActivity, установите контент как:
setContentView(R.layout.main);
Кроме того, чтобы облегчить увидеть, что происходит, я устанавливаю цвета фона в разные цвета - добавляю следующие цвета в файл Strings.xml:
<color name="green">#21d081</color>
<color name="blue">#00A0FF</color>
<color name="orange">#EA6700</color>
И отредактируйте файлы XML -экрана, чтобы добавить цвет, например, в файле Leats_screen.xml, добавьте следующий атрибут:
android:background="@color/blue"
И используйте другой цвет для initial_screen.xml и right_screen.xml, и когда вы запустите проект, вы можете перетащить через экран и раскрыть новую область.
Другие советы
С другой стороны, и это скорее наблюдение, в вашем коде DragableSpace я заметил две вещи.
В Public DragableSpace (контекст контекста, атрибута -атрибуты) {... вы не называли A.Recycle (); После того, как вы получили доступ всех ваших свойств eaftyledattributes. Это плохо, я думаю.
Я не совсем уверен, так как только что подобрал Java, но я обнаружил, что мне нужно изменить Super.DragableSpace (...) на это. DragableSpace (...). Это могло бы быть особенным для моего компонента, но не было полностью уверен, было ли это правильно или нет.
DragableSpace
это ViewGroup
. DragableSpace
не является Activity
. Анкет Домашние экраны - это занятия. Следовательно, DragableSpace
не может быть домашним экраном.