转换活动

时间:2011-04-17 06:07:25

标签: android

亲爱的所有人; 我在布局和活动方面真的很困惑,我在windows应用程序中使用表单和类,但在这里看起来有点不同,所以我不知道什么时候我会使用和布局,当我必须切换活动时。 ..无论如何我构建了一个示例应用程序,我决定让每个活动都有它的布局。 我想在活动之间切换。所以我在AndroidManifest.XML中编写代码

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".activity"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
         <intent-filter>
             <action android:name="android.content.intent.ActionBootCompleted" />
             <category android:name="android.content.intent.CategoryDefault" />
         </intent-filter>
    </activity>
     <activity android:name=".activity1"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN2" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".home"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN2" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

然后在每个onclickListener中:

Button b1=(Button)findViewById(R.id.button1);
    b1.setOnClickListener(new View.OnClickListener() {
      public void onClick(View v) {
             //alert.show();
       //  setContentView(R.layout.menu);
         String packageName = activity1.class.getPackage().getName();

       String packageAndClassName = activity1.class.getName();
       Intent intent = new Intent().setClassName(packageName,packageAndClassName);
       startActivity(intent);

        }
        });

所以它在活动之间切换到Home但是当我想从home切换到actvity1时它会让我回到活动...

那么问题是什么?

3 个答案:

答案 0 :(得分:3)

此代码段应该更好地启动您的activity1。您必须将示例中的MyActivity重命名为托管代码段的活动类的名称(或提供备用上下文变量)。

      Intent intent = new Intent(MyActivity.this, activity1.class);
      startActivity(intent);

答案 1 :(得分:1)

从AndroidManifest.XML

我们可以看到activity是您的主要活动,所以

Intent intent = new Intent().setClassName(packageName,packageAndClassName);

将切换为acticity

尝试使用

Intent intent = new Intent(HomeActivity.this, activity1.class);

更多:

public Intent (Context packageContext, Class<?> cls)

为特定组件创建意图。所有其他字段(操作,数据,类型,类)都为空,但稍后可以使用显式调用对其进行修改。这提供了一种方便的方法来创建旨在执行硬编码类名的intent,而不是依赖系统为您找到合适的类; Select-String

答案 2 :(得分:-1)

查看主题Tasks and Back Stack。它解释了非常清楚地在活动之间导航的概念。