2017-10-29 2 views
-1

Ich bin ziemlich neu in Java und Android-Entwicklung. Ich verwende eine der Google AdMod-Anzeigenaktivitätsvorlagen von Android Studio und möchte die Ebenen-Ganzzahl speichern, wenn die App geschlossen wird, und sie beim nächsten Start erneut abrufen. Ich habe viele Beispiele gefunden, die SharedPreferences verwenden, aber ich weiß nicht, wie man es in diesem Projekt benutzt. Es ist wahrscheinlich einfach.Wie speichert man einen Int beim Beenden?

Hier ist mein Code:

package com.example.dthom.adsimulator; 

import com.google.android.gms.ads.AdListener; 
import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.InterstitialAd; 

import android.content.Context; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 
// Remove the below line after defining your own ad unit ID. 
private static final String TOAST_TEXT = "Test ads are being shown. " 
     + "To show live ads, replace the ad unit ID in 
res/values/strings.xml with your own ad unit ID."; 

private static final int START_LEVEL = 1; 
private int mLevel; 
private Button mNextLevelButton; 
private InterstitialAd mInterstitialAd; 
private TextView mLevelTextView; 

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

    // Create the next level button, which tries to show an interstitial 
when clicked. 
    mNextLevelButton = ((Button) findViewById(R.id.next_level_button)); 
    mNextLevelButton.setEnabled(false); 
    mNextLevelButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      showInterstitial(); 
     } 
    }); 

    // Create the text view to show the level number. 
    mLevelTextView = (TextView) findViewById(R.id.level); 
    mLevel = START_LEVEL; 

    // Create the InterstitialAd and set the adUnitId (defined in 
values/strings.xml). 
    mInterstitialAd = newInterstitialAd(); 
    loadInterstitial(); 

    // Toasts the test ad message on the screen. Remove this after defining 
your own ad unit ID. 
    Toast.makeText(this, TOAST_TEXT, Toast.LENGTH_LONG).show(); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

private InterstitialAd newInterstitialAd() { 
    InterstitialAd interstitialAd = new InterstitialAd(this); 
    interstitialAd.setAdUnitId(getString(R.string.interstitial_ad_unit_id)); 
    interstitialAd.setAdListener(new AdListener() { 
     @Override 
     public void onAdLoaded() { 
      mNextLevelButton.setEnabled(true); 
     } 

     @Override 
     public void onAdFailedToLoad(int errorCode) { 
      mNextLevelButton.setEnabled(true); 
     } 

     @Override 
     public void onAdClosed() { 
      // Proceed to the next level. 
      goToNextLevel(); 
     } 
    }); 
    return interstitialAd; 
} 

private void showInterstitial() { 
    // Show the ad if it's ready. Otherwise toast and reload the ad. 
    if (mInterstitialAd != null && mInterstitialAd.isLoaded()) { 
     mInterstitialAd.show(); 
    } else { 
     Toast.makeText(this, "Ad did not load", Toast.LENGTH_SHORT).show(); 
     goToNextLevel(); 
    } 
} 

private void loadInterstitial() { 
    // Disable the next level button and load the ad. 
    mNextLevelButton.setEnabled(false); 
    AdRequest adRequest = new AdRequest.Builder() 
      .setRequestAgent("android_studio:ad_template").build(); 
    mInterstitialAd.loadAd(adRequest); 
} 

private void goToNextLevel() { 
    // Show the next level and reload the ad to prepare for the level after. 
    mLevelTextView.setText("Level " + (++mLevel)); 
    mInterstitialAd = newInterstitialAd(); 
    loadInterstitial(); 
} 
} 

jede Hilfe willkommen ist

+0

Laut Android-Dokumentation sagt, dass es Sie Ressourcen freigeben sollte und andere Abschaltvorgänge in der onStop-Methode, dh @Override protected void onStop() { // Aufruf der Superklassenmethode zuerst super.onStop(); // Ihr Zustand savePreferencesMethod hier } mehr Details check onStop Methode hier. https://developer.android.com/guide/components/activities/activity-lifecycle.html und mit sharedPrefrences hier: https://developer.android.com/training/basics/data-storage/shared -preferences.html – user606669

+0

GET: Kontext Kontext = getActivity(); SharedPreferences sharedPref = context.getSharedPreferences ("preferenceKeyNameHere", Kontext.MODE_PRIVATE); ------------------------------ PUT: SharedPreferences sharedPref = getActivity(). GetPreferences (Context.MODE_PRIVATE); SharedPreferences.Editor Editor = sharedPref.edit(); editor.putInt ("preferenceKeyNameHere", IhreNummer); editor.commit(); der Schlüssel, den Sie verwenden, um das Element zu speichern, verwenden Sie das zum Abrufen des Elements – user606669

Antwort

0

Erstens wollen Sie eine Instanz von SharedPreferences zu bekommen:

SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); 

Jetzt können Sie eine Nummer lesen. 1 wird die Standardnummer sein, wenn Sie noch nie etwas gespeichert haben. Ebene wird der Name dieser Integer sein:

Integer level = sharedPref.getInt("level",1); 

es speichern, müssen Sie eine Instanz des Editors bekommen und dann in der neuen Ebene gestellt. Danach müssen Sie entweder commit() oder apply() verwenden. Commit() stellt sicher, dass die Ebene gespeichert wird, bevor das Programm den nächsten Befehl ausführt, während Apply im Hintergrund speichert. Wir benötigen erneut eine Instanz von sharedPreferences. Sie können eine neue erstellen oder die alte verwenden.

SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt("level",newlevel); 
    editor.commit(); 

Wenn Sie den Pegel einstellen wollen, wenn die User-Exits in OnStop tun() und es dann wieder lesen, wenn Sie es brauchen:

@Override 
protected void onStop() { 
    SharedPreferences.Editor editor = sharedPref.edit(); 
    editor.putInt("level",newlevel); 
    editor.commit(); 
    super.onStop(); 
} 
0

Hier ist, wie Sie SharedPreferences verwenden können.

  1. eine Instanz von SharedPreferences Get:

    SharedPreferences preferences = getSharedPreferences("preferences", MODE_PRIVATE); 
    
  2. Save the int:

    preferences.edit().putInt("level", value).commit(); 
    
  3. Rufen Sie die int (Sie können die 0 mit der Standard-Ebene ersetzen können):

    preferences.getInt("level", 0); 
    
Verwandte Themen