java - 在 TextView 中保存数据

标签 java android

我是 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/

相关文章:

java - Android N - 在运行时更改区域设置

android - 是否可以在网络应用程序中缓存受密码保护的内容以供离线网络应用程序(iOS/Android)使用?

android - 谷歌钱包、商户账户和沙箱

java - JFrame:简单的按键绑定(bind)?

java - 如何使用文件处理来保存和访问java中的登录信息

java - 使用 JCIFS 从 IP 获取主机名

android - 在Android中使用firebase通过ID查找对象的方法

android - 无法在任务 ':myApp:processDebugResources' 上调用 IncrementalTask​​.taskAction()

android - 如何禁用 fragment 的操作栏选项卡?

java - 我可以使用两个不同的线程在同一个套接字上读写吗?