0

そのため、チュートリアルを使用して最初のアプリを作成しています。携帯電話をエミュレーター (バージョン 4.0.3 Android の HTC One X) として使用しています。コーディングにエラーはありませんが、何らかの理由で「残念ながらアプリが停止しました」というメッセージが表示されます。実行するバージョンを 2.2 から 4.0.3 に変更しようとしましたが、どれも役に立ちません。これが私のエラーログとコーディングです(単純なコーディングなので、うまくいけば簡単に修正できます)

エラーログ

    06-09 12:37:20.630: D/AndroidRuntime(18583): Shutting down VM
06-09 12:37:20.650: W/dalvikvm(18583): threadid=1: thread exiting with uncaught exception (group=0x40a65228)
06-09 12:37:20.660: E/AndroidRuntime(18583): FATAL EXCEPTION: main
06-09 12:37:20.660: E/AndroidRuntime(18583): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.regoreminder/com.regoreminder.RegoReminderActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class imageview
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2202)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2237)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.ActivityThread.access$600(ActivityThread.java:139)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.os.Handler.dispatchMessage(Handler.java:99)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.os.Looper.loop(Looper.java:156)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.ActivityThread.main(ActivityThread.java:5005)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at java.lang.reflect.Method.invokeNative(Native Method)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at java.lang.reflect.Method.invoke(Method.java:511)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at dalvik.system.NativeStart.main(Native Method)
06-09 12:37:20.660: E/AndroidRuntime(18583): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class imageview
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:691)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.Activity.setContentView(Activity.java:1897)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at com.regoreminder.RegoReminderActivity.onCreate(RegoReminderActivity.java:13)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.Activity.performCreate(Activity.java:4543)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2158)
06-09 12:37:20.660: E/AndroidRuntime(18583):    ... 11 more
06-09 12:37:20.660: E/AndroidRuntime(18583): Caused by: java.lang.ClassNotFoundException: android.view.imageview
06-09 12:37:20.660: E/AndroidRuntime(18583):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.createView(LayoutInflater.java:552)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
06-09 12:37:20.660: E/AndroidRuntime(18583):    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)
06-09 12:37:20.660: E/AndroidRuntime(18583):    ... 21 more

JAVA パッケージ com.regoreminder;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class RegoReminderActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
            Thread logoTimer = new Thread(){
                public void run(){
                    try{
                        int logoTimer = 0;
                        while(logoTimer <5000) {
                            sleep (100);
                            logoTimer = logoTimer +100;

                        }
                        startActivity(new Intent("com.regoreminder.CLEARSCREEN"));
                    }   catch (InterruptedException e)  {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

                    finally{
                        finish();
                    }
                }


            };
            logoTimer.start();
    }

    @Override
    protected void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
    }

    @Override
    protected void onPause() {
        // TODO Auto-generated method stub
        super.onPause();
    }

    @Override
    protected void onResume() {
        // TODO Auto-generated method stub
        super.onResume();
    }

    @Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        super.onStop();
    }

マニフェスト

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.regoreminder"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="8" />

    <application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <activity
            android:name=".RegoReminderActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Title"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.regoreminder.CLEARSCREEN" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>

主要

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@drawable/background"
    >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

    <Button
        android:id="@+id/button1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Continue" 
        android:gravity="center"/>

</LinearLayout>

スプラッシュ

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <imageview
        android:src="@drawable/titlebackground"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

</LinearLayout>

私が間違ったことを誰かが助けてくれるなら、それは素晴らしいことです! 私はチュートリアルに従っているので、何が悪いのかわかりません。また、答えを求めてネット全体を調べますが、すべてのアプリは異なります。

4

4 に答える 4

5

これを変える

<imageview
        android:src="@drawable/titlebackground"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />

  <ImageView  
            android:src="@drawable/titlebackground"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />
于 2012-06-09T03:27:47.237 に答える
2

imageviewあるべきですImageView(大文字と小文字に注意してください)

于 2012-06-09T03:27:39.250 に答える
2

[...] チュートリアルを使用して最初のアプリを作成しています。

プログラミングの世界へようこそ...

他の答えは、それが何であるか、そしてそれを修正する方法を教えてくれました。しかし、学ぶ必要があるのは、これらの問題を自分で診断して解決する方法です。基本的には、スタック トレースの読み取り方法を学習する必要があります。

スタック トレースを見ると、一連のセクションが表示されます。

java.lang.RuntimeException: Unable to start activity
    ComponentInfo{com.regoreminder/com.regoreminder.RegoReminderActivity}:
    android.view.InflateException: Binary XML file line #7: Error
    inflating class imageview
    ...
Caused by: android.view.InflateException: Binary XML file line #7: 
    Error inflating class imageview
    ...
Caused by: java.lang.ClassNotFoundException: android.view.imageview

    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
    at android.view.LayoutInflater.createView(LayoutInflater.java:552)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:636)
    at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:66)
    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)

最初のセクションは主要な例外スタックトレースであり、他のセクションは一連のネストされた/チェーンされた例外のためのものです... 1 つの例外がキャッチされ、別の例外が作成され、最初の例外が原因でスローされました。

実際のメッセージを見てみましょう。それぞれが「imageview」と呼ばれるクラスについて話しています。確かに、最後のものはクラス「android.view.imageview」の完全修飾名を与えます...そして例外名は「ClassNotFoundException」であると言います。この例外は基本的にそれが言うことを意味します。VM (具体的にはクラス ローダー) は、その名前のクラスを見つけることができません。(そして、トレースにクラスローダーのクラス/メソッド名が表示されます。)

なんで?

存在しないからです。または正確に言うと、その大文字のクラスは存在しません。すべての Java および Android クラスは大文字で始まるため、Java または Android で「imageview」と呼ばれるクラスが表示されることはありません。

それでは、「この間違ったクラス名はどこから来たのか」と自問する必要があります。ライブラリ クラスに間違ったクラス名を使用するとコンパイル エラーが発生するため、ソース コードには含まれません (リフレクションを使用している場合を除く)。したがって、それはあなたの構成でなければなりません。そして、簡単に検索すると...確かに...それが名前の由来であることがわかります. また、スタック トレースの最後の 2 行に確認の証拠があります。

    at android.view.LayoutInflater.onCreateView(LayoutInflater.java:653)
    at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:678)

名前は、レイアウト内にビューを作成しようとしていること、およびビュー名が XML タグに由来することを示しています。

于 2012-06-09T03:54:08.307 に答える
-1

ビューは常に大文字にする必要があります。あなたの場合「ImageView」

于 2012-06-09T11:03:22.613 に答える