java - 当我第二次将数据从另一个 Activity 发送到 MainActivity 时,我得到的数据是我第一次得到的

标签 java android

我开发了一个简单的应用程序,其中包含带有 2 个 TextView 的卡片。只有 2 个 Activity 。在第二个 Activity 中,我将数据发送到 MainActivity 以在卡片上显示。 当我用数据创建第一张卡片时,一切都很好,但如果我想用另一个数据创建另一个卡片,我会在 MainActivity 上获得与第一次数据完全相同的卡片。 ` 主要 Activity :

public class MainActivity extends ActionBarActivity {
    private RecyclerView recyclerView;
    private RecyclerView.Adapter adapter;
    private RecyclerView.LayoutManager layoutManager;
    public ArrayList<DataObject> dataObject;
    FloatingActionButton fab;
    int i = 0;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dataObject = new ArrayList<>();
        recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
        recyclerView.setHasFixedSize(true);
        layoutManager = new LinearLayoutManager(this);
        recyclerView.setLayoutManager(layoutManager);
        adapter = new RecyclerAdapter(dataObject);
        recyclerView.setAdapter(adapter);
        fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, AddNewCard.class);
                startActivityForResult(intent, 1);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(data==null)
            return;
        String title = data.getStringExtra("title");
        String text = data.getStringExtra("text");
        dataObject.add(i, new DataObject(title, text));
        i++;

    }
}

以及第二个activity的代码:

public class AddNewCard extends ActionBarActivity {
    TextView mTitle, mText;
    Button mButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_add_new_card);
        initElements();
    }

    private void initElements() {
        mTitle = (TextView) findViewById(R.id.editTitle);
        mText = (TextView) findViewById(R.id.editGoal);
        mButton = (Button) findViewById(R.id.sendButton);
        mButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.putExtra("title", mTitle.getText().toString());
                intent.putExtra("text", mText.getText().toString());
                setResult(RESULT_OK, intent);
                finish();
            }
        });

    }
}

我还有带有 2 个字符串的 DataObject 类、构造函数和 getter 以及回收器适配器,它们工作正常。

最佳答案

在 Activity 之间传递数据的一种更简单、更快但不是更强大的方法是使用带有静态变量的公共(public)静态类。正如我之前所说,这可能不是正确的方法,但它确实有效。这不是火箭科学,但如果您创建小型项目,它会非常有用。

关于java - 当我第二次将数据从另一个 Activity 发送到 MainActivity 时,我得到的数据是我第一次得到的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32537807/

相关文章:

java - JsonIgnore on Field vs JsonIgnore on getter of Jackson

java - 将 ArrayList 转换为数组 PayPalItem 时出错

android - 如何使用 Google Analytics 在应用程序中测量时间

java - Android:DataInputStream 和 DataOutputstream 看不到我的目录

java - android同步隐藏状态栏

java - android oreo 的后台服务

java - 在Java中查找工作目录的基本路径

java - 查找二维数组中最接近的非零单元

java - 如何以用户友好的方式使用 GoogleDocs 查看 ACRA 异常(exception)情况?

android - 更改 TabLayout android 中的文本大小