我有3个活动,活动1是从firebase获取数据,活动2是闪屏,活动3是显示数据。我想使用intent将数据从活动1传递到活动3。但是它不起作用。如果我不使用activity 2,它可以工作,但我也想使用activity 2。
练习1从firebase获取数据
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闪屏
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显示了结果
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);
}
}
}
发布于 2020-04-11 16:06:44
我认为它不起作用是因为,在您的LoadingActivity中,您没有从FirstActivity检索数据,也没有将其发送到ResultActivity。因此,您在ResultActivity中的名称列表为空
您可以尝试这样做:
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);
https://stackoverflow.com/questions/61156166
复制