每次调试会发现新的问题(关于项目的。。)
gen目录下的R.java在运行后会自动消失。。
原因分析:(1)、res目录下的layout下的xml文件名有错。按照Android的命名规范是:[a-z0-9_.] 这里要看清楚了,是不能大写开头的!导致xml无法被正确解析。
(2)、layout下的xml文件里面的存在非法字符,一般在eclipse下会进行提示,如果发现有打X的情形,就需要进行修改。特别要注意是半角符号和全角符号,这个错误很隐蔽,大家要小心。还有要符合xml的书写规范。
(3)、layout下的xml文件里,控件的ID值命名有重复。这个错误很隐蔽,大家要仔细检查。因为eclipse本身并不会报错。
(4)、manifest文件中有错误没有修改
解决办法:
如果上述的原因都找了,这个时候gen目录下的R依然出错,对Android工程进行refresh一下,看R文件是否已经更新。
还可以将project ->Build Automatically尽心勾选,让eclipse帮你进行自动更新。如果再不行的话,就尝试进行clean一下,看是否会正常得自动生成。
如果上述的原因都找了,但是源代码依然有错,这个使用你看一下,import Android.R 这个包是否被引入了,如果被包含了,请将这个包去掉,否则错误无法解除。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
下面进入正题:
1、显示MainActivity(Main.xml)
代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listener1 = new OnClickListener() {
//见下文
};
listener2 = new OnClickListener() {
//<span style="font-family: Arial, Helvetica, sans-serif;">见下文</span>
};
setContentView(R.layout.main);
button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(listener1);
button2 = (Button) findViewById(R.id.button2);
button2.setOnClickListener(listener2);
setTitle("ActivityMain");
}
主界面:
2、点击Button2,程序跳转到Activity2
listener2 = new OnClickListener() {
public void onClick(View v) {
setTitle("这是在ActivityMain");
Intent intent2 = new Intent(ActivityMain.this, Activity2.class);
startActivity(intent2);
}
};
intent用来启动一个新的Activity(activity2)
public class Activity2 extends Activity {
OnClickListener listener = null;
Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
listener = new OnClickListener() {
public void onClick(View v) {
finish();
}
};
button = (Button) findViewById(R.id.button4);
button.setOnClickListener(listener);
setTitle("现在是在Activity2里");
}
}
点击button4,结束当前Activity,回到Main:
3、点击Button1:
listener1 = new OnClickListener() {
public void onClick(View v) {
Intent intent1 = new Intent(ActivityMain.this, Activity1.class);
intent1.putExtra(<span style="font-family: Arial, Helvetica, sans-serif;">"activityMain"</span>, "数据来自activityMain");
startActivityForResult(intent1, REQUEST_CODE);
}
};
Bundle extras = getIntent().getExtras();
if (extras != null) {
data = extras.getString("activityMain");
}
setTitle("现在是在Activity1里:"+data);
结果如下:
4、点击Button3
将需要返回的数据放到intent中: listener3 = new OnClickListener() {
public void onClick(View v) {
Intent mIntent = new Intent();
mIntent.putExtra("store", "数据来自Activity1");
setResult(RESULT_OK, mIntent);
finish();
}
};
设置结果状态码,会回传到回调函数 onActivityResult()中
5、回调函数onActivityResult(int requestCode, int resultCode, Intent data)
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_CANCELED)
setTitle("取消");
else if (resultCode == RESULT_OK) {
String temp=null;
Bundle extras = data.getExtras();
if (extras != null) {
temp = extras.getString("store");//数据来自Activity1显示在标题
}
setTitle(temp);
}
}
}
结果: