我正在尝试制作一个简单的文本应用程序,以便使用Java学习应用程序开发人员。
我有2个课程/活动:DisplayActivity和EditActivity。
目标/计划是在EditActivity中创建一个屏幕,您可以在其中编辑一些edittext字段,将其保存并在按下ok时退出EditActivity,按下按钮以访问DisplayActivity并显示以前输入的所有内容。
在EditActivity中,我引用了我的文本字段和按钮,并将输入转换为字符串,每个字符串变量都有自己的getter。
通过DisplayActivity,我创建了一个EditActivity对象,该对象调用textview字段上的getter,这些字段也被正确引用
class EditActivity{
Button mButton;
EditText mName;
DispActivity obj = new DispActivity();
void onCreate(){
mButton = (Button)findViewById(R.id.whatever);
mName = (EditText)findViewById(R.id.whateveralso);
mButton.setOnClickListener(new View.onClickListener(){
@Override
public void onClick(View v){
//does the intent thing where it changes the activity to DispActivity
String name = mName.getText().toString();
}
});
}
在DisplayActivity中,仅引用了textview名称。
我没有错误代码/消息或警告:一切都可以编译,构建和很好地运行,直到我运行该应用为止... DisplayActivity可以正常工作,尽管它什么也不显示。但是当我尝试运行EditActivity时,它崩溃了...
最佳答案
一种方法是使用Intent
及其结果。这是在活动之间共享数据的简单方法。
在您的DisplayActivity
中,开始编辑活动:
Intent i = new Intent(DisplayActivity.this, EditActivity.class);
startActivityForResult(i); //start edit activity
在完成活动之前,必须在
EditActivity
中设置结果:Intent returnIntent = new Intent();
returnIntent.putExtra("result",resultString); //put your result string here
setResult(Activity.RESULT_OK,returnIntent);
finish(); //close edit activity
现在,在您的
DisplayActivity
中,您可以通过实现以下方法获得结果:@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
//display your string here
}
if (resultCode == Activity.RESULT_CANCELED) {
//user canceled the edit activity
}
}
}