[英]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中,活动作为自己的独立实体存在。 称它们为NaviActivity
, HealthActivity
和GeneralActivity
另外,从清单中删除意图过滤器,您不需要它们,应该使用
Intent i = new Intent(this, NaviActivity.class);
startActivity(i);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.