2017-02-20 28 views
0

У меня есть функция, которая отображает FileDialog и намерение использовать Bluetooth. Но когда я нажимаю кнопку «Назад», это относится к предыдущему действию, оно видимо, но не доступно для кликов (например, снимок экрана), и я снова должен нажать кнопку «Назад». Я пробовал функцию onBackPressed() { finish(); }, но ничего не работало должным образом.Назад к предыдущему действию на задней панели нажатой

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

могли бы вы объяснить, что именно имею в виду 'Но когда я нажимаю кнопку назад, речь идет о предыдущей деятельности, она видна, но не кликабельны (например, экран), и я должен снова нажать кнопку «Назад»? –

+0

Когда я запускаю активность из MainActivity, появляется файлDialog. Затем, когда я хочу отменить, я нажимаю кнопку «назад нажимать». Затем диалог исчезает, MainActivity видна, но не доступна для кликов. Я имею в виду, я могу нажимать на экран везде, где хочу, и ничего не происходит. Его как скриншот, как фото. Когда я снова нажимаю кнопку «назад, нажмите кнопку», тогда все будет в порядке. –

+0

Да, но как его решить? Я попробовал метод finish(), но он не работает. –

ответ

0

Что вы описали не было столь полным. Но это может привести к этому, поэтому вы можете проверить это.
1. использование super.onBackPressed() или дать onBackPressed() return может сделать разные
2. пожалуйста, проверьте работу режима запуска работы.

но вы бы лучше дать более подробный код, то я могу помочь вам

+0

Думаю, я все отдал. :) В MainActivity я вызываю ShareViaBluetoothActivity и высылается код ShareViaBluetoothActivity. –

+0

Что вы подразумеваете под кодом ShareViaBluetoothActivity? – amyli

+0

код этого класса, который я уже опубликовал. :) –