メイン アクティビティが起動されたときに、ランダムな画像を 5 秒間表示しようとしています (3 つの画像があります)。(これは、私のアプリの使用方法と広告の一種のチュートリアルです)。しかし、1日1回表示したいだけです。SharedPreferences を正しく使用する必要がありますか? それを行うための最良のアプローチですよね?だから私はこれを見つけました:
ImageView imgView = new ImageView(this);
Random rand = new Random();
int rndInt = rand.nextInt(n) + 1; // n = the number of images, that start at idx 1
String imgName = "img" + rndInt;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
imgView.setImageResource(id);
ランダムな画像を表示します。この:
public class mActivity extends Activity {
@Overrride
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.id.layout);
// Get current version of the app
PackageInfo packageInfo = this.getPackageManager()
.getPackageInfo(getPackageName(), 0);
int version = packageInfo.versionCode;
SharedPreferences sharedPreferences = this.getPreferences(MODE_PRIVATE);
boolean shown = sharedPreferences.getBoolean("shown_" + version, false);
ImageView imageView = (ImageView) this.findViewById(R.id.newFeature);
if(!shown) {
imageView.setVisibility(View.VISIBLE);
// "New feature" has been shown, then store the value in preferences
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.put("shown_" + version, true);
editor.commit();
} else
imageView.setVisibility(View.GONE);
}
アプリが更新されたら、アプリの現在のバージョンを表示します。これらのコードを自分のアプリに適応させようとしましたが、失敗しました。また、画像がわずか 5 秒間表示され、自動的に閉じる必要もあります。
やあ、また私だ。私は今このコードを手に入れました、そしてそれは完全に動作します:
boolean firstboot = getSharedPreferences("BOOT_PREF",MODE_PRIVATE).getBoolean("firstboot", true);
getSharedPreferences("BOOT_PREF",MODE_PRIVATE).edit().
putBoolean("firstboot", true).commit();
if(firstboot){
Intent webBrowser = new Intent(getApplicationContext(), WebBrowser.class);
// dismiss it after 5 seconds
webBrowser.putExtra("url", "http://sce.jelocalise.fr/mobile/ajax/interstitiel.php");
startActivity(webBrowser);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent MyIntent = new Intent(getApplicationContext(), Home.class);
startActivity(MyIntent);
}
}
}, 5000);
getSharedPreferences("BOOT_PREF",MODE_PRIVATE).edit().
putBoolean("firstboot", false).commit();
}
今欲しいもの: webview にキャンセル ボタンがあり、クリックすると webBrowser アクティビティが終了します。問題は、キャンセル ボタンをクリックしてもハンドラーが停止せず、5 秒後にホーム アクティビティがリロードされることです (これは通常のことです)。キャンセルボタンでハンドラーを強制終了したいだけです。handler.removeCallbacks メソッドを試してみましたが、その仕組みがよくわかりませんでした。