这是按照书上仿写的一段代码,想要打开第二个Activity,但是,始终启动不了。
书上说,只要它的action,category等一致,就能找到匹配的activity,可是为什么还是打开不了。请大家帮忙看看。还有一个问题,action是不是可以自己随意设置,只要在manifest注册就行。谢谢。程序代码如下:
第一个Activity代码
package com.IWin.intent;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends ActionBarActivity {
Button button;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button=(Button)findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//显示Intent
/*Intent intent=new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent); */
//隐式Intent
Intent intent=new Intent();
intent.setAction(com.IWin.intent.SecondActivity.MARK);
startActivity(intent);
}
});
}
}
package com.IWin.intent;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
第二个Activity代码
public class SecondActivity extends Activity {
protected static final String MARK = null;
private TextView text;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
text=(TextView)findViewById(R.id.text);
}
}
manifest文件:
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
android:name=".MainActivity"
android:label="@string/app_name" >
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.IWin.intent.SecondActivity">
<intent-filter >
<action android:name="com.IWin.intent.SecondActivity.MARK" />
<category android:name="android.intent.category.DAFAULT"/>
</intent-filter>
</activity>
你写错了,要么
//隐式Intent
Intent intent=new Intent();
intent.setAction("com.IWin.intent.SecondActivity.MARK");
startActivity(intent);
要么protected static final String MARK = "com.IWin.intent.SecondActivity.MARK";
action要和manifest里定义的action的字符串一致。你写的情况,action是null!
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。