Вопрос

Я разработал 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, и когда вы запустите проект, вы можете перетащить через экран и раскрыть новую область.

alt text

Другие советы

С другой стороны, и это скорее наблюдение, в вашем коде DragableSpace я заметил две вещи.

  1. В Public DragableSpace (контекст контекста, атрибута -атрибуты) {... вы не называли A.Recycle (); После того, как вы получили доступ всех ваших свойств eaftyledattributes. Это плохо, я думаю.

  2. Я не совсем уверен, так как только что подобрал Java, но я обнаружил, что мне нужно изменить Super.DragableSpace (...) на это. DragableSpace (...). Это могло бы быть особенным для моего компонента, но не было полностью уверен, было ли это правильно или нет.

DragableSpace это ViewGroup. DragableSpace не является Activity. Анкет Домашние экраны - это занятия. Следовательно, DragableSpace не может быть домашним экраном.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top