2017-11-30 25 views
2

私は特定のフォルダ内のサーバからダウンロードしたファイルのためのボタンがあり、私が欲しいクリックボタンを無効にする方法は?

無効ボタンをクリックした場合は、ボタンを無効にした後、あなたが持っている、ちょうどフラグを保存

ここ
btinstall.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       File file = new File(Environment.getExternalStorageDirectory() + "/download/app-debug.apk"); 
       if (file.exists()) { 
       bt_install.setEnabled(false); 
       } 
+0

てみてくださいボタン付き.setClickable(false); – AndroidRuntimeException

+0

ダウンロードしたファイル名は、sqliteまたはapp preferencesのいずれかに保存する必要があります。条件付きでクリックを有効にします。 – Bernat

+0

@AndroidRuntimeExceptionは動作しますが、オープンアクティビティが再び無効にならない場合:( – ahmed3

答えて

0

移動アクティビティを作成するだけでなく、アクションの後いつでも、それが実行されるので、クリックのうちに無効ボタン:

final File file = new File(Environment.getExternalStorageDirectory() + "/download/app-debug.apk"); 
    bt_install.setEnabled(!file.exists()); 
    btinstall.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      //Download file and do the rest 

を、あなたの活動は、onPause状態に入るhome_buttonを押すと、 onCreateが実行されないさせ、その場合には、再びこれを確認するための第二の良い場所は、API 11後onResumeメソッドに

@Override 
public void onResume() { 
     super.onResume(); 
     final File file = new File(Environment.getExternalStorageDirectory() + "/download/app-debug.apk"); 
     bt_install.setEnabled(!file.exists()); 
} 
+0

ホームボタンを押してファイルを手動で削除した場合、アプリケーションに戻るとこのコードは機能しません。 – AndroidRuntimeException

+0

home_buttonを押すと、あなたのアクティビティはonPause状態に入り、onCreateが実行されなくなります。その場合、もう一度これをチェックする2番目の良い場所はonResumeメソッドです –

0

具体的な名前で前のファイルのダウンロードもう一度ボタンを読むとそのフラグを読む

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(); 
if (prefs.getBoolean("disabled", false)){ 
    bt_install.setEnabled(false); 
} 

btinstall.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       File file = new File(Environment.getExternalStorageDirectory() + "/download/app-debug.apk"); 
       if (file.exists()) { 
        bt_install.setEnabled(false); 
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(); 
        boolean statusLocked = prefs.edit().putBoolean("disabled", true).commit(); 
        } 
       } 
      }); 
+0

ありがとう....... 。 – ahmed3

0

何も保存する必要はありません。ユーザーが外部ファイルマネージャからファイルを削除すると、偽陽性となります。コードをonResumeメソッドに移動し、存在するかどうかを確認します。

@Override 
public void onResume(){ 
    super.onResume(); 
    File file = new File(Environment.getExternalStorageDirectory() + "/download/app-debug.apk"); 
    if (file.exists()) { 
     bt_install. setClickable(false); 
    } 

} 
0

である、あなたは012でSetを保存することができます。ここで

は一例です:その後、

private List<String> getDownloadedFileList() { 
    SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); 
    List<String> downloadedFileList = Collections.emptyList(); 
    try { 
    downloadedFileList = (ArrayList<String>) ObjectSerializer.deserialize(prefs.getString(TASKS, ObjectSerializer.serialize(new ArrayList<task>()))); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
    e.printStackTrace(); 
    } 
    return downloadedFileList; 
} 

private void setDownloadedFileList(List<String> downloadedFileList) { 
    SharedPreferences prefs = getSharedPreferences(SHARED_PREFS_FILE, Context.MODE_PRIVATE); 
    Editor editor = prefs.edit(); 

    try { 
    editor.putString(DOWNLOADED_FILES, ObjectSerializer.serialize(downloadedFileList)); 
    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
    editor.commit(); 
} 

private void addDownloadedFile(String filename) { 
    List<String> downloadedFileList = getDownloadedFileList(); 

    if(!downloadedFileList .contains(filename)) { 
    downloadedFileList.add(filename); 
    setDownloadedFileList(downloadedFileList); 
    } 
} 

private boolean checkDownloadedFileExists(String filename) { 
    return getDownloadedFileList().contains(filename); 
} 

そして、あなたのボタンのプロパティを設定するとき:

btinstall.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
    File file = new File(Environment.getExternalStorageDirectory() + "/download/app-debug.apk"); 
    addDownloadedFile("/download/app-debug.apk"); 
} 

最後に、格納された値に応じて設定クリッカブル:

@Override 
public void onResume(){ 
    super.onResume(); 
    if (checkDownloadedFileExists("/download/app-debug.apk")) { 
    bt_install.setClickable(false); 
    } 
} 
関連する問題