返回上一次按下后的活动

时间:2017-02-20 02:18:33

标签: android android-activity onbackpressed

我有一个显示FileDialog和Intent以使用蓝牙的功能。 但是当我按下后退按钮时,它会显示在之前的活动中,它是可见的但不可点击(如截图),我必须再次按下后退按钮。 我尝试了函数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();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你所描述的并不是那么完整。但是我这有可能导致一些原因,那么你可以检查一下。
1.使用super.onBackPressed()或者给onBackPressed()返回可以使不同的
2.请检查活动启动模式的工作情况。

但你最好提供更详细的代码,然后我可以帮助你