如何在没有意图的情况下在两个活动之间传递数据

时间:2017-06-16 08:00:45

标签: android bundle android-spinner

我有一个微调器和一个注册按钮。微调器起作用......

typeofcompany.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
            ba = typeofcompany.getSelectedItem().toString();
            typeofcompany.getItemAtPosition(i);

            sss = companycode.get(i);
            SelectType(companycode.get(i));
            sessionmanager.tosaveRegionName(sss);



        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

当我选择微调器的一个项目时,该项应该在按钮的Activity内传递。 我已经使用了捆绑方法 像

 Intent intent = new Intent(MainActivity.this, CustRegActivity.class);
intent.putExtra("spinneritem", abc);
startActivity(intent);

但是这个startActivity(intent)直接让我进入第二个活动。我只是想以我的意图发送数据我该怎么做....

2 个答案:

答案 0 :(得分:0)

您可以像这样向第二个活动添加方法 public void setSpinnerItem(String abc){ ..... } 设置变量(或静态变量)来保存内容,

然后在第一个活动

中的onItemSelected中调用它

或更好 使用名为onSpinnerItemSelected(String abc)的方法在第一个活动中添加一个观察者接口,然后在第二个活动中设置观察者。

您也可以将数据保存在sp,sqlitedb中的第一个活动中,或者只是保存在数据类的实例变量中,然后在第二个活动中获取它们

答案 1 :(得分:0)

您可以使用共享偏好设置。在我的情况下,我通常使用TinyDB,它非常容易使用。 继续并在您的gradle中同步此语句

compile 'com.mukesh:tinydb:1.0.1'

用法非常简单。 只需创建tinyDB的新实例并传递应用程序上下文。这样

TinyDB tinyDB = new TinyDB(getApplicationContext());

在onCreate中启动它,然后以这种方式存储数据:

tinyDB.putString("spinneritem", abc);

您可以从应用中的任何活动中检索此字符串。在您想要获取数据的活动中,再次声明TinyDB的新实例,如上所示,并检索以下列方式存储的数据:

tinyDB.getString("spinneritem");

您可以通过这种方式存储所有变量类型,无论是int,boolean还是数组和对象。