onclick open activity1但向activity10发送额外的文本…字符串是必需的还是我可以简单地使用intent?如果有帮助,可以发布xml

tzxcd3kk  于 2021-06-26  发布在  Java
关注(0)|答案(1)|浏览(301)

多个活动应用程序…activity1(sitedata)收集数据并发送到activity10(datareview)…但在直接进入activity10之前,用户必须通过Activity2-9(sandiegoarea等)收集数据并向其他活动传递额外的文本,直到activity10。。。
这样:(activity1->activity2->…->活动10)
activity10将能够查看activity1-9额外的文本以进行验证…代码如下,但activity10没有额外的文本显示在其文本视图中以供查看?我怎样才能解决这个问题?
活动1-站点数据-数据信息输入

public class SiteData extends AppCompatActivity {

    public static final String EXTRA_TEXT = "MultipleActivities.EXTRA_TEXT";
    public static final String EXTRA_NUMBER = "MultipleActivities.EXTRA_NUMBER";

        public void clickFunction(View view) {
        Intent intent = new Intent(getApplicationContext(), SanDiegoArea.class);
        startActivity(intent);

        Log.i("Info", "Login Details Entered");
        }

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

        //Possible coding needed for Autocomplete...see more

        Button button = (Button) findViewById(R.id.buttonSend);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                openSanDiegoArea();
            }
        });
    }

    public void openSanDiegoArea() {

            EditText editText1 = (EditText) findViewById(R.id.editTextName);
            String text = editText1.getText().toString();

            EditText editText2 = (EditText) findViewById(R.id.editTextPhone);
            int number = Integer.parseInt(editText2.getText().toString());

            Intent intent = new Intent(this, DataReview.class);
            intent.putExtra(EXTRA_TEXT, text);
            intent.putExtra(EXTRA_NUMBER, number);
            startActivity(intent);
    }
}

活动10-数据审查部分获取信息

public class DataReview extends AppCompatActivity {

    public void clickFunction(View view) {
        Intent intent = new Intent(getApplicationContext(), ThankYou.class);
        startActivity(intent);

        Log.i("Info", "Sample Data Sent to BWTF");
    }

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

            Intent intent = getIntent();
            String text = intent.getStringExtra(SiteData.EXTRA_TEXT);
            int number = intent.getIntExtra(SiteData.EXTRA_NUMBER, 0);

            TextView textView1  = (TextView) findViewById(R.id.editTextName);
            TextView textView2  = (TextView) findViewById(R.id.editTextPhone);
            TextView textView3  = (TextView) findViewById(R.id.editTextEmail);
            TextView textView4  = (TextView) findViewById(R.id.editTextDate);
            TextView textView5  = (TextView) findViewById(R.id.editTextTime);

            textView1.setText(text);
            textView2.setText("" + number);

    }
};
yvfmudvl

yvfmudvl1#

如果activity1调用activity2,它将必须按您的方式向其传递数据我猜你的activity2是datareview.class),但是activity2会调用activity3,为了不丢失从activity2收到的数据,你也必须发送它。换句话说,activity1将activity1的数据发送到activity2,activity2将activity1和activity2的数据发送到activity3,依此类推。
这样,activity9将从调用者activity8接收(1、2、3、4、5、6、7、8)数据,并且必须将所有这些累积的数据传递给activity10。
考虑到activity3是由activity2调用的,它无法看到从activity1发送的数据,因为除非activity2也传递它,否则它不知道它。我说清楚了吗?
如果你只是在学习android,那么用这种方式学习是可以的,但这并不是解决这个问题的更好方法。我会在所有活动中使用相同的viewmodel来表示这些数据,以便始终只有一个地方保存数据,因为这样可以使代码更清晰。实际上,我甚至不会使用所有这些活动,我只会使用一个活动,并使用10个片段,每个页面一个(这只是为了在这两者之间提供导航)。所以,如果你觉得你的应用程序不错的话,这些都是你改进它的想法。

相关问题