繁体   English   中英

意图无效-找不到活动

[英]Intent not working - Activity not found

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

从我所看到的来看,只有第一个看起来有效,而其他两个看起来相同。 我不知道我是否已经盯着这个眼睛太长时间了,而我却缺少一些愚蠢的东西。 有什么建议么?

在任何人说之前,我已经将实际的软件包名称等更改为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);
    }

}

我希望有人提出一些好的建议,因为我已经盯着这个眼睛太久了。

首先检查您的Application程序包(您在清单中声明的​​程序包名称),所有Activity程序包名称均相同...如果是,则您的代码应该正常工作。 如果没有,则在清单中声明您的活动并使用完全限定的包名称

如果还没有,请尝试此操作(至少优先考虑以下方式)

更换

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

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

并为其他事情做改变

使用以下更改代码

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

对于其他人也一样。

每个活动都应仅扩展Activity而不是MainActivity 在Android中,活动作为自己的独立实体存在。 称它们为NaviActivityHealthActivityGeneralActivity

另外,从清单中删除意图过滤器,您不需要它们,应该使用

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM