只需使用“setContentView”或“startActivity”?

时间:2011-05-15 17:30:46

标签: android

我正在学习android并在教程中打开他们使用的新屏幕

...

startActivity( new Intent("com.rob.minispy.sweet"));

(在main.java中)

...

public class sweet extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
    }

}

(在sweet.java中)

...

最后

<activity android:name=".sweet"
          android:label="@string/app_name">
    <intent-filter>
        <action android:name="android.intent.action.SWEET" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

(在清单中)

现在不仅它不能真正发挥作用并使应用程序崩溃,而且只是通过

更容易实现它
setContentView(R.layout.splash);
来自main.java的

还是有一些缺点?

谢谢!

2 个答案:

答案 0 :(得分:4)

您有两种方法可以启动sweet活动

  1. startActivity( new Intent("com.rob.minispy.sweet"));更改为startActivity( new Intent("android.intent.action.SWEET"));查看更多信息here
  2. startActivity(new Intent(this,sweet.class)); 。这使用Intent(Context packageContext, Class<?> cls)形式。更多信息here

答案 1 :(得分:0)

是的,最好开始一项新活动,因为这样Android会自动处理从一个活动到另一个活动的转换。您的应用程序崩溃是因为您不正确地执行了此操作。意图应创建为new Intent(this, com.rob.minispy.sweet.class)。你在构造函数中使用一个字符串,它应该是一个动作而不是一个类。