想用Intent启动另一个Activity却总是报ActivityNotFoundException代码如下
Test.java
package com.comp; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn = (Button)findViewById(R.id.btn); btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setAction("testAction"); startActivity(intent); } }); } }
Test2.java
package com.comp; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class Test2 extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tx = new TextView(this); tx.setText("Test2"); setContentView(tx); } }
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.comp" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Test" 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=".Test2"> <intent-filter> <action android:name="testAction"></action> <category android:name="testCategory"></category> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="7" /> </manifest>
不行你就这么设置
[code="xml"][/code]
分类Category,一般不要去在Intent中设置它,如果你写Intent的接收者,就在Manifest.xml的Activity的IntentFilter中包含android.category.DEFAULT,这样所有不设置Category(Intent.addCategory(String c);)的Intent都会与这个Category匹配。
你是要从test 去跳到 test2 吧
intent.setAction("testAction"); 不对。
这么些:
[code="java"]public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(Test.this,Test2.class);
Test.this.startActivity(intent);
} [/code]
哦 我看了下你的代码 是隐式的 不好意思 开始时候没太注意。
你的报ActionNotFound错误是因你要启动的Activity没有声明
从你的代码上看应该有一个叫testAction的Activiyt吧
你在xml中加上这句话 看看好使不
[code="xml"]< activity android:name = ".testAction" />[/code]
不好使在调
呵呵 你犯了一个初学者很容易范的错误 activity没在xml中声明 android中的四大组建 要用的话都要在入口文件中声明的
Test2 Activity intent-filter 声明包含了
[code="xml"]
[/code]
而你调用代码并没有设置 intent 的 category
[code="java"]
Intent intent = new Intent();
intent.setAction("testAction");
startActivity(intent);
[/code]
试试修改成这样
[code="java"]
Intent intent = new Intent();
intent.setAction("testAction");
intent.addCategory("testCategory");
startActivity(intent);
[/code]