не может запустить приложение Android с собственным классом, который расширяет SeekBar

1

Я пытаюсь написать расширение для SeekBar, чтобы настроить его поведение.

У меня возникли проблемы с получением самой основной формы нового класса для запуска в эмуляторе.

Я даже не могу получить класс, который не добавляет никаких новых функций для запуска.

Может ли кто-нибудь сказать мне, какую основную вещь я упускаю здесь? Почему приложение не будет правильно инициализироваться при попытке использовать ExtendedSeekBar? Где я могу найти информацию об исключении, которое произошло?

Я запускаю Eclipse на XP, используя версию Android SDK 10. Какую еще информацию я должен предоставить?

Спасибо за любую помощь.


Здесь подробно о том, что я пытаюсь сделать.

Начиная с учебного приложения Hello World, я расширяю main.xml, чтобы включить стандартный SeekBar и обновить HelloAndroid.java, чтобы найти объект и установить прогресс в 25.

Здесь 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"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<SeekBar
    android:id="@+id/SeekBar01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    />
</LinearLayout>

и здесь HelloAndroid.java:

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        SeekBar vSeekBar1 = (SeekBar)findViewById(R.id.SeekBar01);
        vSeekBar1.setProgress(25);
    }
}

Я запускаю это и, без проблем, SeekBar появляется в приложении на эмуляторе с правильной установкой прогресса

Никаких проблем до сих пор...


Итак, теперь я хочу начать расширять SeekBar.

Я обновляю main.xml для изменения SeekBar в ExtendedSeekbar

<?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"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello"
    />
<ExtendedSeekBar
    android:id="@+id/SeekBar01"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" 
    />
</LinearLayout>

и HelloAndroid.java, чтобы найти новый объект

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ExtendedSeekBar vSeekBar1 = (ExtendedSeekBar)findViewById(R.id.SeekBar01);
        vSeekBar1.setProgress(25);
    }
}

Я создаю новый класс, который просто содержит новые конструкторы и функцию инициализации, вызываемую каждым конструктором (поэтому я могу установить одну точку останова)

ExtendedSeekBar.java

package com.example.helloandroid;

import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.widget.SeekBar;

public class ExtendedSeekBar extends SeekBar {

    public ExtendedSeekBar(Context context) {
        super(context);
        Initialise();
    }

    public ExtendedSeekBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        Initialise();
    }

    public ExtendedSeekBar(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        Initialise();
    }

    void Initialise(){
        Log.i("ESB","ExtendedSeekBar Initialise ");
    }
}

Теперь, когда я запускаю его, я получаю представление Debug View со следующим дампом стека

HelloAndroid [Android Application]  
    DalvikVM[localhost:8628]    
        Thread [<1> main] (Suspended (exception RuntimeException))  
            ActivityThread.performLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1647    
            ActivityThread.handleLaunchActivity(ActivityThread$ActivityClientRecord, Intent) line: 1663 
            ActivityThread.access$1500(ActivityThread, ActivityThread$ActivityClientRecord, Intent) line: 117   
            ActivityThread$H.handleMessage(Message) line: 931   
            ActivityThread$H(Handler).dispatchMessage(Message) line: 99 
            Looper.loop() line: 123 
            ActivityThread.main(String[]) line: 3683    
            Method.invokeNative(Object, Object[], Class, Class[], Class, int, boolean) line: not available [native method]  
            Method.invoke(Object, Object...) line: 507  
            ZygoteInit$MethodAndArgsCaller.run() line: 839  
            ZygoteInit.main(String[]) line: 597 
            NativeStart.main(String[]) line: not available [native method]  
        Thread [<8> Binder Thread #2] (Running) 
        Thread [<7> Binder Thread #1] (Running) 

Окно LogCat содержит следующие

03-31 17:44:56.628: DEBUG/AndroidRuntime(589): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
03-31 17:44:56.628: DEBUG/AndroidRuntime(589): CheckJNI is ON
03-31 17:44:57.518: DEBUG/AndroidRuntime(589): Calling main entry com.android.commands.pm.Pm
03-31 17:44:57.749: DEBUG/dalvikvm(239): GC_EXPLICIT freed 3K, 54% free 2544K/5511K, external 410K/517K, paused 72ms
03-31 17:44:57.759: WARN/ActivityManager(61): No content provider found for: 
03-31 17:44:57.778: WARN/ActivityManager(61): No content provider found for: 
03-31 17:44:57.817: DEBUG/PackageParser(61): Scanning package: /data/app/vmdl-558475578.tmp
03-31 17:44:57.909: INFO/PackageManager(61): Removing non-system package:com.example.helloandroid
03-31 17:44:57.909: INFO/ActivityManager(61): Force stopping package com.example.helloandroid uid=10037
03-31 17:44:57.979: INFO/Process(61): Sending signal. PID: 577 SIG: 9
03-31 17:44:58.009: INFO/WindowManager(61): WIN DEATH: Window{40657ca8 com.example.helloandroid/com.example.helloandroid.HelloAndroid paused=false}
03-31 17:44:58.159: WARN/InputManagerService(61): Got RemoteException sending setActive(false) notification to pid 577 uid 10037
03-31 17:44:58.597: DEBUG/dalvikvm(61): GC_CONCURRENT freed 483K, 42% free 4431K/7623K, external 809K/1222K, paused 8ms+9ms
03-31 17:44:58.748: DEBUG/PackageManager(61): Scanning package com.example.helloandroid
03-31 17:44:58.748: INFO/PackageManager(61): Package com.example.helloandroid codePath changed from /data/app/com.example.helloandroid-1.apk to /data/app/com.example.helloandroid-2.apk; Retaining data and using new
03-31 17:44:58.768: INFO/PackageManager(61): Unpacking native libraries for /data/app/com.example.helloandroid-2.apk
03-31 17:44:58.798: DEBUG/installd(35): DexInv: --- BEGIN '/data/app/com.example.helloandroid-2.apk' ---
03-31 17:44:59.038: DEBUG/dalvikvm(598): DexOpt: load 62ms, verify+opt 15ms
03-31 17:44:59.058: DEBUG/installd(35): DexInv: --- END '/data/app/com.example.helloandroid-2.apk' (success) ---
03-31 17:44:59.058: WARN/PackageManager(61): Code path for pkg : com.example.helloandroid changing from /data/app/com.example.helloandroid-1.apk to /data/app/com.example.helloandroid-2.apk
03-31 17:44:59.058: WARN/PackageManager(61): Resource path for pkg : com.example.helloandroid changing from /data/app/com.example.helloandroid-1.apk to /data/app/com.example.helloandroid-2.apk
03-31 17:44:59.058: DEBUG/PackageManager(61):   Activities: com.example.helloandroid.HelloAndroid
03-31 17:44:59.078: INFO/ActivityManager(61): Force stopping package com.example.helloandroid uid=10037
03-31 17:44:59.178: INFO/installd(35): move /data/dalvik-cache/data@[email protected]@classes.dex -> /data/dalvik-cache/data@[email protected]@classes.dex
03-31 17:44:59.178: DEBUG/PackageManager(61): New package installed in /data/app/com.example.helloandroid-2.apk
03-31 17:44:59.278: INFO/ActivityManager(61): Force stopping package com.example.helloandroid uid=10037
03-31 17:44:59.369: DEBUG/dalvikvm(129): GC_EXPLICIT freed 3K, 53% free 2850K/5959K, external 1527K/1970K, paused 72ms
03-31 17:44:59.621: WARN/RecognitionManagerService(61): no available voice recognition services found
03-31 17:44:59.958: DEBUG/dalvikvm(185): GC_EXPLICIT freed 94K, 52% free 2758K/5703K, external 410K/517K, paused 559ms
03-31 17:45:00.098: DEBUG/dalvikvm(61): GC_EXPLICIT freed 474K, 43% free 4349K/7623K, external 807K/1222K, paused 138ms
03-31 17:45:00.198: INFO/installd(35): unlink /data/dalvik-cache/data@[email protected]@classes.dex
03-31 17:45:00.218: DEBUG/AndroidRuntime(589): Shutting down VM
03-31 17:45:00.249: DEBUG/dalvikvm(589): GC_CONCURRENT freed 101K, 72% free 295K/1024K, external 0K/0K, paused 2ms+2ms
03-31 17:45:00.249: DEBUG/jdwp(589): Got wake-up signal, bailing out of select
03-31 17:45:00.249: DEBUG/dalvikvm(589): Debugger has detached; object registry had 1 entries
03-31 17:45:00.278: INFO/AndroidRuntime(589): NOTE: attach of thread 'Binder Thread #3' failed
03-31 17:45:01.029: DEBUG/AndroidRuntime(603): >>>>>> AndroidRuntime START com.android.internal.os.RuntimeInit <<<<<<
03-31 17:45:01.029: DEBUG/AndroidRuntime(603): CheckJNI is ON
03-31 17:45:01.978: DEBUG/AndroidRuntime(603): Calling main entry com.android.commands.am.Am
03-31 17:45:02.029: INFO/ActivityManager(61): Force stopping package com.example.helloandroid uid=10037
03-31 17:45:02.029: INFO/ActivityManager(61): Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.example.helloandroid/.HelloAndroid } from pid 603
03-31 17:45:02.168: DEBUG/AndroidRuntime(603): Shutting down VM
03-31 17:45:02.199: INFO/ActivityManager(61): Start proc com.example.helloandroid for activity com.example.helloandroid/.HelloAndroid: pid=612 uid=10037 gids={}
03-31 17:45:02.248: INFO/AndroidRuntime(603): NOTE: attach of thread 'Binder Thread #3' failed
03-31 17:45:02.267: DEBUG/dalvikvm(603): GC_CONCURRENT freed 102K, 69% free 322K/1024K, external 0K/0K, paused 4ms+1ms
03-31 17:45:02.289: DEBUG/jdwp(603): Got wake-up signal, bailing out of select
03-31 17:45:02.289: DEBUG/dalvikvm(603): Debugger has detached; object registry had 1 entries
03-31 17:45:03.208: WARN/ActivityThread(612): Application com.example.helloandroid is waiting for the debugger on port 8100...
03-31 17:45:03.288: INFO/System.out(612): Sending WAIT chunk
03-31 17:45:03.298: INFO/dalvikvm(612): Debugger is active
03-31 17:45:03.358: INFO/System.out(612): Debugger has connected
03-31 17:45:03.409: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:03.608: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:03.808: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:04.018: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:04.218: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:04.419: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:04.628: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:04.828: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:05.038: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:05.248: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:05.449: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:05.648: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:05.859: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:06.058: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:06.268: INFO/System.out(612): waiting for debugger to settle...
03-31 17:45:06.479: INFO/System.out(612): debugger has settled (1340)
03-31 17:45:12.150: WARN/ActivityManager(61): Launch timeout has expired, giving up wake lock!
03-31 17:45:13.158: WARN/ActivityManager(61): Activity idle timeout for HistoryRecord{40556f78 com.example.helloandroid/.HelloAndroid}
03-31 17:45:18.238: DEBUG/dalvikvm(239): GC_EXPLICIT freed 6K, 54% free 2543K/5511K, external 410K/517K, paused 53ms
03-31 17:45:23.369: DEBUG/dalvikvm(287): GC_EXPLICIT freed 9K, 54% free 2597K/5639K, external 410K/517K, paused 119ms
03-31 17:45:28.339: DEBUG/dalvikvm(329): GC_EXPLICIT freed <1K, 54% free 2539K/5511K, external 410K/517K, paused 51ms
03-31 17:45:33.409: DEBUG/dalvikvm(129): GC_EXPLICIT freed 76K, 51% free 2929K/5959K, external 1542K/1970K, paused 110ms
03-31 17:45:38.949: DEBUG/SntpClient(61): request time failed: java.net.SocketException: Address family not supported by protocol

и приложение появляется в эмуляторе без каких-либо элементов, указанных в main.xml, только в строке заголовка. Точка останова, установленная в ExtendedSeekBar:: initialise, не встречается.

Теги:
extends
seekbar

2 ответа

1
Лучший ответ

Вам нужно добавить представление в xml следующим образом:

<view class="com.example.helloandroid.ExtendedSeekBar"...
  • 0
    Спасибо, MByD. Я знал, что это должно быть что-то тривиальное, но не мог решить это. Я пытался заставить это работать в течение многих дней :-)
  • 0
    Рад, что смог помочь :)
1

в xml создать строку поиска с помощью

<com.example.helloandroid.ExtendedSeekBar

/>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню