Android 的問題與回答

Android

簡介

使用方法

開發工具

開始寫程式

視覺化介面

視覺元件

對話元件

核心物件

事件處理

資料儲存

查詢功能

影音功能

繪圖功能

網路功能

衛星地圖

特殊功能

資源管理

裝置管理

系統核心

問題與回答

刷機升級

常用軟體

Eclipse

教學錄影

訊息

相關網站

參考文獻

最新修改

簡體版

English

問題:在執行時出現

[2011-09-14 12:32:58 - HelloTest22] Re-installation failed due to different application signatures.
[2011-09-14 12:32:58 - HelloTest22] You must perform a full uninstall of the application. WARNING: This will remove the application data!
[2011-09-14 12:32:58 - HelloTest22] Please execute 'adb uninstall ccc.test' in a shell.
[2011-09-14 12:32:58 - HelloTest22] Launch canceled!

  • 回答:

參考:
http://android.cool3c.com/article/6913
http://stackoverflow.com/questions/2887436/re-installation-failed-due-to-different-application-signatures

如果真的要加入新版的程式,必須先移除舊版的,以下是筆者的一個執行範例。

2011-09-15 08:17:49 - IntentTest] ------
[2011-09-15 08:17:49 - IntentTest] Android Launch!
[2011-09-15 08:17:49 - IntentTest] adb is running normally.
[2011-09-15 08:17:49 - IntentTest] Performing ccc.test.IntentTest activity launch
[2011-09-15 08:17:49 - IntentTest] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'AVD1.6'
[2011-09-15 08:17:49 - IntentTest] Uploading IntentTest.apk onto device 'emulator-5554'
[2011-09-15 08:17:49 - IntentTest] Installing IntentTest.apk…
[2011-09-15 08:17:50 - IntentTest] Re-installation failed due to different application signatures.
[2011-09-15 08:17:50 - IntentTest] You must perform a full uninstall of the application. WARNING: This will remove the application data!
[2011-09-15 08:17:50 - IntentTest] Please execute 'adb uninstall ccc.test' in a shell.
[2011-09-15 08:17:50 - IntentTest] Launch canceled!
[2011-09-15 08:22:42 - IntentTest] ------

此時我在命令列使用下列指令:
C:\Documents and Settings\ccc>adb uninstall ccc.test
Success

[2011-09-15 08:22:42 - IntentTest] Android Launch!
[2011-09-15 08:22:42 - IntentTest] adb is running normally.
[2011-09-15 08:22:42 - IntentTest] Performing ccc.test.IntentTest activity launch
[2011-09-15 08:22:42 - IntentTest] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'AVD1.6'
[2011-09-15 08:22:42 - IntentTest] Uploading IntentTest.apk onto device 'emulator-5554'
[2011-09-15 08:22:42 - IntentTest] Installing IntentTest.apk…
[2011-09-15 08:22:44 - IntentTest] Success!
[2011-09-15 08:22:44 - IntentTest] Starting activity ccc.test.IntentTest on device emulator-5554
[2011-09-15 08:22:45 - IntentTest] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=ccc.test/.IntentTest }

問題:在執行時出現

* Error generating final archive: Debug Certificate expired on 2011/9/9 上午 11:10 Hello22 Unknown Android Packaging Problem

  • 回答:砍掉 C:\Documents and Settings\ccc\.android 當中的 debug.keystore ,讓 Eclipse 自己在產生一份新的就可以了。

參考:[筆記]Android Debug certificate expired

http://stackoverflow.com/questions/2194808/debug-certificate-expired-error-in-eclipse-android-plugins

問題:在啟動 Android Virtual Device (AVD) 的時候,碰到下列錯誤訊息,應該如何解決:

invalid command-line parameter: Files\Android\android-sdk\tools/emulator-arm.exe.
Hint: use '@foo' to launch a virtual device named 'foo'.
please use -help for more information

  • 回答:Android R12 版有 Bug,安裝時不能處理路徑中有空格的情況,如果您用 Windows 的預設安裝,會安裝在 C:\Programme Files(x86)\Android\android-sdk,這個有空格,因此無法運作,您必須將 Eclipse 當中的 Window/Preference 將 SDK Location 改為 — C:\PROGRA~1\Android\android-sdk

* 請參考:http://stackoverflow.com/questions/6638713/android-emulator-is-not-starting-showing-invalid-command-line-parameter

問題:在 Android 的程式中,經常會看到使用 className.this 的形式,這種寫法到底代表甚麼意思?舉例而言,以下是 Android API Demo 當中的 app/AlarmService 中的一小段程式,其中的 AlarmService.this 所使用的就是這種寫法。

public class AlarmService extends Activity {
    private PendingIntent mAlarmSender;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        // Create an IntentSender that will launch our service, to be scheduled
        // with the alarm manager.
        mAlarmSender = PendingIntent.getService(AlarmService.this,
                0, new Intent(AlarmService.this, AlarmService_Service.class), 0);
...

回答:其實在該範例中只要寫 this 即可,但是由於 Android 的系統中常有使用 inner class 的習慣,在 inner class 中可以用 OTHERCLASS.this 指定外層類別的物件,因此在 Android 中習慣統一加上類別名稱,以釐清到底存取的是哪一層的 this. 更詳細的資訊請參考下列網址。

http://www.blackbeltfactory.com/QuestionView.wwa?questionId=11551504

如果元件很多,超過一個畫面,無法捲動到最下面的元件,那應該怎麼辦?

參考:http://stackoverflow.com/questions/1497755/android-how-to-automatically-display-vertical-scrollbar

此時可以用一個 ScrollView 將整個 Layout 包在裡面,就能解決問題了,以下是一個範例。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:scrollbars="vertical" 
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ScrollView android:id="@+id/scrollView2" android:layout_width="match_parent" android:layout_height="wrap_content">
<LinearLayout
    android:scrollbars="vertical" 
    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"
    />
<Button android:text="Button" android:id="@+id/button4" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
<ToggleButton android:text="ToggleButton" android:id="@+id/toggleButton1" android:layout_width="wrap_content" android:layout_height="wrap_content"></ToggleButton>
<Button android:layout_width="wrap_content" android:id="@+id/button1" android:layout_height="wrap_content" android:text="Button"></Button>
<CheckBox android:text="CheckBox" android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content"></CheckBox>
<RadioButton android:text="RadioButton" android:id="@+id/radioButton1" android:layout_width="wrap_content" android:layout_height="wrap_content"></RadioButton>
<WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent"></WebView>
<Spinner android:layout_width="match_parent" android:id="@+id/spinner1" android:layout_height="wrap_content"></Spinner>
<ProgressBar style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:id="@+id/progressBar1" android:layout_height="wrap_content"></ProgressBar>
<QuickContactBadge android:id="@+id/quickContactBadge1" android:layout_width="wrap_content" android:layout_height="wrap_content"></QuickContactBadge>
<RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content"></RatingBar>
<RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <RadioButton android:layout_height="wrap_content" android:text="RadioButton" android:layout_width="wrap_content" android:id="@+id/radio0" android:checked="true"></RadioButton>
    <RadioButton android:layout_height="wrap_content" android:text="RadioButton" android:layout_width="wrap_content" android:id="@+id/radio1"></RadioButton>
    <RadioButton android:layout_height="wrap_content" android:text="RadioButton" android:layout_width="wrap_content" android:id="@+id/radio2"></RadioButton>
    <RadioGroup android:id="@+id/radioGroup2" android:layout_width="wrap_content" android:layout_height="wrap_content">
        <RadioButton android:layout_height="wrap_content" android:text="RadioButton" android:layout_width="wrap_content" android:id="@+id/radio0" android:checked="true"></RadioButton>
        <RadioButton android:layout_height="wrap_content" android:text="RadioButton" android:layout_width="wrap_content" android:id="@+id/radio1"></RadioButton>
        <RadioButton android:layout_height="wrap_content" android:text="RadioButton" android:layout_width="wrap_content" android:id="@+id/radio2"></RadioButton>
    </RadioGroup>
    <Button android:text="Button" android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <Button android:text="Button" android:id="@+id/button3" android:layout_width="wrap_content" android:layout_height="wrap_content"></Button>
    <RatingBar android:id="@+id/ratingBar2" android:layout_width="wrap_content" android:layout_height="wrap_content"></RatingBar>
</RadioGroup>
</LinearLayout>
</ScrollView>
</LinearLayout>

Facebook

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License