startActivity関数の後にアプリケーションを返すようにしようとしています。私は何も返す必要はありません、私はちょうどstartActivityが呼び出されるのと同じポイントで継続するアプリケーションが必要です、理由は私がそれらの磁力計の変更を探している、そして検出されたときにアプリケーションを続行することができます。 私はこれを行う方法を見つけていない、私もstartActivityForResultを試みたが、netherは動作します。 startActivityまたはstartActivityForResultのいずれかを定義して、呼び出し元に戻るようにする方法はありますか? またはこれを行う他の方法。 アイブはいろいろな方法を試して何時間も過ごしましたが、何も動いていませんでした。startActivityForResultの後に戻る方法
Intent intent = new Intent();
intent.putExtra("SOMETHING", "EXTRAS");
this.setResult(RESULT_OK, intent);
finish();
そして、あなたの親アクティビティに、ここで結果を取得します::このアクティビティの使用を終了するには
private void scanStart() { // was private added static
//
snloop=0;
if (startscan != 1) {
final Intent msens = new Intent(this, MldpBluetoothScanActivity.SensorActivity.class); // Added by Chris
msens.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivityForResult(msens,snloop);
}
startscan =0;
public static class SensorActivity extends Activity implements SensorEventListener {
private SensorManager mSensorManager;
private Sensor mMagnetometer;
private final float[] mMagnetometerReading = new float[3];
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mMagnetometer = mSensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
}
@Override
protected void onPause() {
super.onPause();
// Don't receive any more updates from sensor.
mSensorManager.unregisterListener(this);
}
// Get readings from accelerometer and magnetometer. To simplify calculations,
// consider storing these readings as unit vectors.
@Override
public void onSensorChanged(SensorEvent event) {
float axisX = event.values[0];
float axisY = event.values[1];
float axisZ = event.values[2];
ActionBar actionBar = getActionBar(); //Get the ActionBar
// if (snloop == 0) {
if (axisZ > lastZ + 500 || axisZ < lastZ - 500) {
actionBar.setTitle("greater than 500"); //Set the title on the ActionBar
actionBar.setDisplayHomeAsUpEnabled(true); //Make home icon clickable with < symbol on the left to go back
setProgressBarIndeterminate(true); //Make the progress bar indeterminate
setProgressBarIndeterminateVisibility(true); //Make the progress bar visible
snloop = 1;
lastZ = axisZ;
startscan =1;
onPause();
else {
actionBar.setTitle("Please Place on Interchange Point"); //Set the title on the ActionBar
actionBar.setDisplayHomeAsUpEnabled(true); //Make home icon clickable with < symbol on the left to go back
setProgressBarIndeterminate(true); //Make the progress bar indeterminate
setProgressBarIndeterminateVisibility(true); //Make the progress bar visible
snloop = 0;
lastZ = axisZ;
}
「startActivityが呼び出されたのと同じ時点で続行するだけです」というメッセージと同じです。もしあなたがalをコードしていれば、ステートメントstartActivity()の後ろにはコードはありません。あなたの活動がバックグラウンドになると、その活動はおそらく殺されるでしょう。これは活動の通常のライフサイクルプロセスです。 onSaveInstanceStateをオーバーライドして、アクティビティのインスタンス変数を保存する必要があります。その後、たとえばonCreate()でそれらを取得します。 – greenapps