首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用intent over 2 activities传递Arraylist字符串

使用intent over 2 activities传递Arraylist字符串
EN

Stack Overflow用户
提问于 2020-04-11 19:38:15
回答 1查看 55关注 0票数 0

我有3个活动,活动1是从firebase获取数据,活动2是闪屏,活动3是显示数据。我想使用intent将数据从活动1传递到活动3。但是它不起作用。如果我不使用activity 2,它可以工作,但我也想使用activity 2。

练习1从firebase获取数据

代码语言:javascript
代码运行次数:0
运行
复制
matchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mDbref = FirebaseDatabase.getInstance().getReference();
            mkomref = mDbref.child("Students");
            string = matchKriteria.getText().toString();
            Query query = mkomp.orderByChild("Komp").equalTo(string);
            query.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    if (dataSnapshot.exists()) {
                        if(nameList.size()>0)
                            nameList.clear();

                        for (DataSnapshot data : dataSnapshot.getChildren()) {
                            nameList.add(data.child("Name").getValue(String.class));
                        }
                        Intent intent = new Intent(FirstActivity.this, LoadingActivity.class);
                        intent.putExtra("value",nameList);
                        startActivity(intent);
                    }
                }

活动2闪屏

代码语言:javascript
代码运行次数:0
运行
复制
public class LoadingActivity extends AppCompatActivity {

public static int SPLASH_TIME_OUT= 5000;

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


new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent intent =new Intent(LoadingActivity.this, ResultActivity.class);
        startActivity(intent);
        finish();

    }
},SPLASH_TIME_OUT);

练习3显示了结果

代码语言:javascript
代码运行次数:0
运行
复制
public class ResultActivity extends AppCompatActivity {


private ArrayList<String> nameList;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_bedrift_match_resultat);
    Intent intent = getIntent();

    if (intent != null)
        nameList = intent.getStringArrayListExtra("value");

    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    if (nameList.size() > 0) {
        CustomAdapter adapter = new CustomAdapter(this, nameList);
        recyclerView.setAdapter(adapter);
    }
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-12 00:06:44

我认为它不起作用是因为,在您的LoadingActivity中,您没有从FirstActivity检索数据,也没有将其发送到ResultActivity。因此,您在ResultActivity中的名称列表为空

您可以尝试这样做:

代码语言:javascript
代码运行次数:0
运行
复制
public class LoadingActivity extends AppCompatActivity {

public static int SPLASH_TIME_OUT= 5000;
private ArrayList<String> nameList = new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_loading);
    if (getIntent() != null) {
        namelist.addAll(getIntent().getStringArrayListExtra("value");
    }


new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        Intent intent =new Intent(LoadingActivity.this, ResultActivity.class);
        intent.putExtra("value",nameList);
        startActivity(intent);
        finish();

    }
},SPLASH_TIME_OUT);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61156166

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档