2017-02-20 1 views
0

J'ai une fonction qui affiche FileDialog et Intention d'utiliser Bluetooth. Mais quand j'appuie sur le bouton retour, il s'agit d'une activité précédente, elle est visible mais pas cliquable (comme la capture d'écran) et je dois appuyer à nouveau sur le bouton retour. J'ai essayé la fonction onBackPressed() { finish(); }, mais rien n'a fonctionné correctement.Retour à l'activité précédente sur dos appuyé

MainActivity:

... 
     if(item == shareMenu) { 
      startActivity(new Intent(getBaseContext(), ShareViaBluetoothActivity.class)); 
     } 
... 

ShareViaBluetoothActivity:

import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.content.pm.ResolveInfo; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.widget.Toast; 

import java.io.File; 
import java.util.List; 

public class ShareViaBluetoothActivity extends Activity { 

    private static final int DISCOVER_DURATION = 300; 
    private static final int REQUEST_BLU = 1; 

    private FileDialog fileDialog; 

    public File getFile() { 
     return file; 
    } 

    public void setFile(File file) { 
     this.file = file; 
    } 

    private File file; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     File mPath = new File(Environment.getExternalStorageDirectory(), "//DIR//"); 
     fileDialog = new FileDialog(this, mPath); 
     fileDialog.addFileListener(new FileDialog.FileSelectedListener() { 
      public void fileSelected(File file) { 
       Log.d(getClass().getName(), "selected file " + file.toString()); 
       setFile(file); 
       sendViaBluetooth(); 
      } 
     }); 
     fileDialog.showDialog(); 
    } 

    public void sendViaBluetooth() { 

     BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 

     if(btAdapter == null) { 
      Toast.makeText(this, "Bluetooth is not supported on this device!", Toast.LENGTH_LONG).show(); 
     } else { 
      enableBluetooth(); 
     } 
    } 

    public void enableBluetooth() { 

     Intent discoveryIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 

     discoveryIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, DISCOVER_DURATION); 

     startActivityForResult(discoveryIntent, REQUEST_BLU); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     if(resultCode == DISCOVER_DURATION && requestCode == REQUEST_BLU) { 

      Intent intent = new Intent(); 
      intent.setAction(Intent.ACTION_SEND); 
      intent.setType("*/*"); 

      intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new File(file.toString()))); 
      intent.setPackage("com.android.bluetooth"); 

      PackageManager pm = getPackageManager(); 
      List<ResolveInfo> appsList = pm.queryIntentActivities(intent, 0); 

      if(appsList.size() > 0) { 
       String packageName = null; 
       String className = null; 
       boolean found = false; 

       for(ResolveInfo info : appsList) { 
        packageName = info.activityInfo.packageName; 
        if(packageName.equals("com.android.bluetooth")) { 
         className = info.activityInfo.name; 
         found = true; 
         break; 
        } 
       } 

       if (!found) { 
        Toast.makeText(this, "Bluetooth havn't been found", 
          Toast.LENGTH_LONG).show(); 
       } else { 
        intent.setClassName(packageName, className); 
        startActivity(intent); 
       } 
      } 
     } else { 
      Toast.makeText(this, "Bluetooth is cancelled", Toast.LENGTH_LONG) 
        .show(); 
     } 
    } 
} 
+0

pourriez-vous expliquer ce que veut dire exactement par 'Mais quand je presse le bouton de retour, il vient à l'activité précédente, il est visible, mais pas cliquable (comme l'écran) et je dois appuyer sur le bouton de retour une fois de plus »? –

+0

Lorsque je lance l'activité depuis MainActivity, fileDialog s'affiche. Ensuite, quand je veux annuler, j'appuie sur le bouton "back press". Puis la boîte de dialogue disparaît, MainActivity est visible, mais pas cliquable. Je veux dire, je peux taper sur l'écran où je veux et rien ne se passe. C'est comme une capture d'écran, comme une photo. Lorsque j'appuie à nouveau sur le bouton "back press", tout va bien. –

+0

Oui, mais comment le résoudre? J'ai essayé la méthode finish(), mais ça ne marche pas. –

Répondre

0

Qu'est-ce que vous avez décrit n'a pas été si complète. Mais moi, il y a des raisons qui peuvent en résulter, alors vous pouvez le vérifier.
1. utiliser super.onBackPressed() ou donner le retour onBackPressed() peut faire différent
2. s'il vous plaît vérifier le fonctionnement du mode de lancement d'activité.

mais vous feriez mieux de donner un code plus détaillé, alors je peux vous aider

+0

Je pense, j'ai tout donné. :) Dans MainActivity j'appelle ShareViaBluetoothActivity, et le code ShareViaBluetoothActivity est posté. –

+0

Que voulez-vous dire par le code ShareViaBluetoothActivity est posté? – amyli

+0

un code de cette classe que j'ai déjà posté. :) –