我正在尝试制作一个简单的文本应用程序,以便使用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
    }
   }
 }

10-01 08:15