我有三个意图来切换布局等。
只有第一个似乎有用,而另外两个来自我所能看到的,相同的。我不知道我现在已经盯着这个太长时间而且我错过了一些愚蠢的事情。有什么建议吗?
在有人说之前,我已将实际的包名称等更改为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);
}
}
我希望有人提出一些好的建议,因为我现在已经盯着这个了很长时间。
答案 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中,活动作为自己的独立实体存在。称他们为NaviActivity
,HealthActivity
和GeneralActivity
此外,从清单中删除intent过滤器,您不需要它们,并应使用
启动活动Intent i = new Intent(this, NaviActivity.class);
startActivity(i);