我是 Android 编程新手。我创建了一个应用程序,在其中我将视频添加到奖品中,这些视频给我一个硬币奖品,这个硬币奖品以百分比显示在 TextView
中。
问题是,当我离开应用程序并返回或打开应用程序屏幕时,TextView
百分比计数器将重置为零,然后每个用户的工作将被删除。
我需要找到一种我无法编写的方法,以保存最高 100% 的学分,因此学分必须保留到最后,没有任何东西可以删除它们,我尝试了 onSaveInstanceState
outstate 方法,它不起作用。
下面是我写的App代码。
public class MainActivity extends AppCompatActivity implements RewardedVideoAdListener {
private AdView mAdView;
private WebView mywebview;
private InterstitialAd mInterstitialAd;
private FirebaseAnalytics mFirebaseAnalytics;
private RewardedVideoAd mRewardedVideoAd;
private static final String TAG = MainActivity.class.getName();
public double Coins;
RelativeLayout Home;
RelativeLayout PgCoins;
Button btn1, btn2;
ImageButton Backbtn;
TextView mCoinscounter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MobileAds.initialize(this, "");
//counter CRD
mCoinscounter = (TextView) findViewById(R.id.Textcoins);
// WEbView
WebView mywebview = findViewById(R.id.mywebview);
WebSettings webSettings = mywebview.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
mywebview.setWebChromeClient(new WebChromeClient());
mywebview.getSettings().setUseWideViewPort(true);
mywebview.setFocusableInTouchMode(true);
mywebview.setWebViewClient(new WebViewClient());
mywebview.loadUrl("url");
Home = findViewById(R.id.home);
PgCoins = findViewById(R.id.pagecoins);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
Backbtn = findViewById(R.id.backbtn);
Home.setVisibility(View.VISIBLE);
PgCoins.setVisibility(View.GONE);
findViewById(R.id.btn2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (mRewardedVideoAd.isLoaded()) {
mRewardedVideoAd.show();
}
}
});
mRewardedVideoAd = MobileAds.getRewardedVideoAdInstance(this);
mRewardedVideoAd.setRewardedVideoAdListener(this);
// ADMob Top
mAdView = findViewById(R.id.adViewTop);
AdRequest adRequest = new AdRequest.Builder().setRequestAgent("android_studio:ad_template").build();
mAdView.loadAd(adRequest);
// ADMob Bot
mAdView = findViewById(R.id.adViewBot);
AdRequest adRequest1 = new AdRequest.Builder().setRequestAgent("android_studio:ad_template").build();
mAdView.loadAd(adRequest1);
// ADMob Top Coins
mAdView = findViewById(R.id.adViewTopcoins);
AdRequest adRequest2 = new AdRequest.Builder().setRequestAgent("android_studio:ad_template").build();
mAdView.loadAd(adRequest2);
// ADMob Bot Coins
mAdView = findViewById(R.id.adViewBotcoins);
AdRequest adRequest3 = new AdRequest.Builder().setRequestAgent("android_studio:ad_template").build();
mAdView.loadAd(adRequest3);
//ADMob Interstitial
prepareAd();
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
scheduler.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
runOnUiThread(new Runnable() {
public void run() {
if (mInterstitialAd.isLoaded()) {
mInterstitialAd.show();
} else {
Log.d("TAG", "Interstitial not loaded");
}
prepareAd();
}
});
}
}, 60, 60, TimeUnit.SECONDS);
// Obtain the FirebaseAnalytics instance.
mFirebaseAnalytics = FirebaseAnalytics.getInstance(this);
//ADMob Video
loadRewardedVideoAd();
}
public void displayCrd (double amount){
mCoinscounter.setText(String.format("%.2f", amount));
}
private void loadRewardedVideoAd() {
mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917",
new AdRequest.Builder().build());
}
//ADMob Interstitial
public void prepareAd(){
mInterstitialAd = new InterstitialAd(this);
mInterstitialAd.setAdUnitId("ca-app-pub-3940256099942544/1033173712");
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
//Screen Change Page
boolean Change = true;
public void change(View view)
{
if (Change){
Home.setVisibility(View.GONE);
PgCoins.setVisibility(View.VISIBLE);
Change = false;
}else{
Home.setVisibility(View.VISIBLE);
PgCoins.setVisibility(View.GONE);
Change = true;
}
}
@Override
public void onRewardedVideoAdLoaded() {
Log.d(TAG, "Video Caricato");
}
@Override
public void onRewardedVideoAdOpened() {
}
@Override
public void onRewardedVideoStarted() {
}
@Override
public void onRewardedVideoAdClosed() {
loadRewardedVideoAd();
}
@Override
public void onRewarded(RewardItem rewardItem) {
Toast.makeText(this, " Amount " + rewardItem.getType() + " : " + rewardItem.getAmount(), Toast.LENGTH_SHORT).show();
Coins += rewardItem.getAmount();
displayCrd(Coins/3600*100);
}
@Override
public void onRewardedVideoAdLeftApplication() {
}
@Override
public void onRewardedVideoAdFailedToLoad(int i) {
Log.d(TAG, "Caricamento Fallito");
}
@Override
public void onRewardedVideoCompleted() {
loadRewardedVideoAd();
}
}
最佳答案
您必须使用 SharedPreferences
因为您可以存储所需的值并检索它。
使用这个你可以在prefereces中存储值
SharedPreferences.Editor editor = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE).edit();
editor.putInt("scrore", 10);
editor.putString("userName", "xyz");
editor.apply();
使用它您可以从偏好中检索值
SharedPreferences prefs = getSharedPreferences(MY_PREFS_NAME, MODE_PRIVATE);
String userName = prefs.getString("userName", null);
if (userName != null) {
int scrore = prefs.getInt("scrore", 0);//0 is the default value.
}
https://developer.android.com/reference/android/content/SharedPreferences
关于java - 在 TextView 中保存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54882728/