当我在驼峰情况下使用Activity时它会出错,但在拼写大写的情况下工作正常

时间:2013-07-28 19:52:56

标签: android android-activity uppercase

HY! Expets我有两项活动 1- MainActivity 2-启动

我在使用Thread启动MainActivity活动后,通过新意图开始我的Startup活动。但是当我通过传递MainActivity拼写为驼峰的情况并在内容过滤器标记<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>

然后它可以正常工作。

我想知道使用大写拼写而非骆驼案的原因。???

...感谢名单

2 个答案:

答案 0 :(得分:0)

您可能希望定义intent for a specific component

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

然后,您无需为清单中的<intent-filter>打扰MainActivity

答案 1 :(得分: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.。由于它们是您正在使用的类中定义的常量,因此需要按照定义使用它们。

例如,以下两个声明不一样。它们定义并实例化两个不同的变量:

int myVariable = 1;
int MYVARIABLE = 1;

所以,你不能写:

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

作为

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

或其他任何前者。

来自<action>上的Android开发者资源页面:

  

将[Intent类中定义的标准操作]之一指定给   这个属性,前置“android.intent.action”。到那个字符串   遵循ACTION_。例如,对于ACTION_MAIN,请使用   “android.intent.action.MAIN”和ACTION_WEB_SEARCH,请使用   “android.intent.action.WEB_SEARCH”。

详细了解:

Intent

action