在Wallpaper Adapter中,我开始了一个3秒动画GIF的活动。 当它结束时,我把它放回到用户所在的活动壁纸中,但它不会去,因为我需要确切地知道哪个类别。 如何保存用户所在的类别,以便在gif消失后可以返回?
壁纸活动:
package org.serie.wallpaper.activities;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import org.serie.wallpaper.R;
import org.serie.wallpaper.adapters.WallpapersAdapter;
import org.serie.wallpaper.models.Wallpaper;
import java.util.ArrayList;
import java.util.List;
public class WallpapersActivity extends AppCompatActivity {
List<Wallpaper> wallpaperList;
List<Wallpaper> favList;
RecyclerView recyclerView;
WallpapersAdapter adapter;
DatabaseReference dbWallpapers, dbFavs;
ProgressBar progressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wallpapers);
Intent intent = getIntent();
final String category = intent.getStringExtra("category");
Toolbar toolbar = findViewById(R.id.toolbar);
toolbar.setTitle(category);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
toolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(),HomeActivity.class));
}
});
favList = new ArrayList<>();
wallpaperList = new ArrayList<>();
recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
adapter = new WallpapersAdapter(this, wallpaperList);
recyclerView.setAdapter(adapter);
progressBar = findViewById(R.id.progressbar);
dbWallpapers = FirebaseDatabase.getInstance().getReference("images")
.child(category);
if (FirebaseAuth.getInstance().getCurrentUser() != null) {
dbFavs = FirebaseDatabase.getInstance().getReference("users")
.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.child("favourites")
.child(category);
fetchFavWallpapers(category);
} else {
fetchWallpapers(category);
}
}
private void fetchFavWallpapers(final String category) {
progressBar.setVisibility(View.VISIBLE);
dbFavs.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
progressBar.setVisibility(View.GONE);
if (dataSnapshot.exists()) {
for (DataSnapshot wallpaperSnapshot : dataSnapshot.getChildren()) {
String id = wallpaperSnapshot.getKey();
String title = wallpaperSnapshot.child("title").getValue(String.class);
String desc = wallpaperSnapshot.child("desc").getValue(String.class);
String url = wallpaperSnapshot.child("url").getValue(String.class);
Wallpaper w = new Wallpaper(id, title, desc, url, category);
favList.add(w);
}
}
fetchWallpapers(category);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private void fetchWallpapers(final String category) {
progressBar.setVisibility(View.VISIBLE);
dbWallpapers.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
progressBar.setVisibility(View.GONE);
if (dataSnapshot.exists()) {
for (DataSnapshot wallpaperSnapshot : dataSnapshot.getChildren()) {
String id = wallpaperSnapshot.getKey();
String title = wallpaperSnapshot.child("title").getValue(String.class);
String desc = wallpaperSnapshot.child("desc").getValue(String.class);
String url = wallpaperSnapshot.child("url").getValue(String.class);
Wallpaper w = new Wallpaper(id, title, desc, url, category);
if (isFavourite(w)) {
w.isFavourite = true;
}
wallpaperList.add(w);
}
adapter.notifyDataSetChanged();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
private boolean isFavourite(Wallpaper w) {
for (Wallpaper f : favList) {
if (f.id.equals(w.id)) {
return true;
}
}
return false;
}
}
下载Gif活动:
package org.serie.wallpaper.activities;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import org.serie.wallpaper.R;
import org.serie.wallpaper.models.Category;
import java.util.List;
public class Downloadgif extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_downloadgif);
Thread timer = new Thread(){
public void run(){
try{
sleep(5000); // set the duration of splash screen
}
catch(InterruptedException e){
e.printStackTrace();
} finally {
Intent intent = new Intent(Downloadgif.this, WallpapersActivity.class);
startActivity(intent);
}
}
};
timer.start();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
}
这是用户点击类别时:
@Override
public void onClick(View view) {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
int p = getAdapterPosition();
Category c = categoryList.get(p);
Intent intent = new Intent(mCtx, WallpapersActivity.class);
intent.putExtra("category", c.name);
mCtx.startActivity(intent);
}
糟糕: 抱歉英语
答案 0 :(得分:0)
您可以使用sharedPreferences。
SharedPreferences sharedPreferences;
进入onCreate:
sharedPreferences = getSharedPreferences("prefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
现在您可以使用以下方式存储信息:
editor.putString("example_key", "example string to store");
editor.commit();
检查:
editor.getString("example_key", "");
您也可以使用相同但使用布尔值:
editor.putBoolean("example_key", true);
editor.commit(); //Never forget the commit when you use a put
editor.getBoolean("example_key"), true); // To get the value. The second parameter is required but is a default one