2

ハイ!Expetsには2つのアクティビティがあります1- MainActivity 2- Startup

スレッドを使用してアクティビティをMainActivity開始した後、新しいインテントでアクティビティを開始しています。Startupしかし、 以下に示すようMainActivityに、キャメルケースと inten-filter タグ内でスペルを渡して新しいインテントを呼び出すと、<action android:name="com.example.test.MainActivity"

Thread timer =new Thread(){
public void run(){
 try{
sleep(5000);
}catch(InterruptedException e){
e.printStackTrace();
}finally{
Intent startUpIntent = new Intent("com.example.test.MainActivity");                         

startActivity(startUpIntent);
                    }
                }
            };

ここにAndroidMaifest.xmlファイルコードがあります

<activity
        android:name="com.example.test.Startup"
        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="com.example.newboston.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.test.MainActivity" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

エラーが発生します。しかし、コードを次のように使用すると

Intent startUpIntent = new Intent("com.example.test.MainActivity");                         

AndroidManifest.xml コード

<intent-filter>
<action android:name="com.example.test.MainActivity" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

それは私が望むようにうまく動作します。

キャメルケースの代わりに大文字のスペルを使用する理由を知りたい.???

ありがとう...

4

2 に答える 2

0

クラスには多数のアクション定数が定義されていIntentます。それらのいくつかは次のとおりです。

ACTION_MAIN: Start up as the initial activity of a task, with no data input and no returned output. 

ACTION_CALL: Initiate a phone call. 

ACTION_EDIT: Display data for the user to edit.

ACTION MAINマニフェストで使用するには、このACTION_部分をに置き換えますandroid.intent.action.。これらは使用しているクラスで定義された定数であるため、定義どおりに使用する必要があります。

たとえば、次の 2 つの宣言は同じではありません。これらは、2 つの異なる変数を定義してインスタンス化します。

int myVariable = 1;
int MYVARIABLE = 1;

したがって、次のように書くことはできません。

<action android:name="android.intent.action.MAIN" />

なので

<action android:name="android.intent.action.main" />

または前者以外のもの。

の Android 開発者リソース ページから<action>:

[Intent クラスで定義された標準アクション] の 1 つをこの属性に割り当てるには、先頭に「android.intent.action.」を追加します。ACTION_ に続く文字列に。たとえば、ACTION_MAIN の場合は「android.intent.action.MAIN」を使用し、ACTION_WEB_SEARCH の場合は「android.intent.action.WEB_SEARCH」を使用します。

これについてもっと読むには:

意図

アクション

于 2013-07-28T20:24:51.133 に答える
0

おそらく、特定のコンポーネントのインテントを定義したいと思うでしょう:

Intent startUpIntent = new Intent(Startup.this, MainActivity.class);

次に、マニフェスト<intent-filter>で forを気にする必要はありません。MainActivity

于 2013-07-28T19:57:51.347 に答える