意图不工作 - 未找到活动

时间:2013-12-26 17:38:19

标签: java android android-intent manifest

我有三个意图来切换布局等。

只有第一个似乎有用,而另外两个来自我所能看到的,相同的。我不知道我现在已经盯着这个太长时间而且我错过了一些愚蠢的事情。有什么建议吗?

在有人说之前,我已将实际的包名称等更改为com.mysite.myapp。原件都拼写为我需要它们。

来自我的MainActivity

public class MainActivity extends Activity {

    @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

Button general1 = (Button)findViewById(R.id.btngeneral);
            general1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent i = new Intent("com.mysite.myapp.general");
                    startActivity(i);                   
                }
            });

        Button health1 = (Button)findViewById(R.id.btnhealth);
            health1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent i = new Intent("com.mysite.myapp.health");
                    startActivity(i);                   
                }
            });

        Button navi1 = (Button)findViewById(R.id.btnnavi);
            navi1.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    Intent i = new Intent("com.mysite.myapp.navi");
                    startActivity(i);                   
                }
            });

第一个像预期的那样完全正常。

这来自我的清单:

<activity
        android:name="com.mysite.myapp.MainActivity"
        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=".general"
        android:label="@string/app_name" 
        android:configChanges="orientation"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="com.mysite.myapp.general" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <activity
        android:name=".health"
        android:label="@string/app_name" 
        android:configChanges="orientation"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="com.mysite.myapp.health" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

    <activity
        android:name=".navi"
        android:label="@string/app_name" 
        android:configChanges="orientation"
        android:screenOrientation="portrait">
        <intent-filter>
            <action android:name="com.mysite.myapp.navi" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

工作意图的类

    public class general extends MainActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.general);
        }
}

两个非工作意图的类

    public class health extends MainActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.health);
        }
}

    public class navi extends MainActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.navi);
    }

}

我希望有人提出一些好的建议,因为我现在已经盯着这个了很长时间。

3 个答案:

答案 0 :(得分:1)

首先检查您的应用程序包(您在清单中声明的​​包名称)和所有活动包名称是否相同...如果是,您的代码应该有效。如果不是,请使用完全限定的包名称

在清单中声明您的活动

如果还没有,试试这个(最不喜欢以下方式)

替换

Intent i = new Intent("com.mysite.myapp.general");
startActivity(i);   

Intent i = new Intent(MainActivity.this,general.class);
startActivity(i);   

并做其他事情的改变

答案 1 :(得分:0)

使用以下

更改代码
   Intent i = new Intent(this, general.class);
   startActivity(i);

和其他人一样。

答案 2 :(得分:0)

每项活动只应延伸Activity而非MainActivity。在Android中,活动作为自己的独立实体存在。称他们为NaviActivityHealthActivityGeneralActivity

此外,从清单中删除intent过滤器,您不需要它们,并应使用

启动活动
Intent i = new Intent(this, NaviActivity.class);
startActivity(i);