0

誰かが次の問題で私を助けることができれば、私は永遠に感謝します.

私のAndroidアプリは、物件調査を行うためのアンケートです。各アクティビティは、キッチン、バスルーム、セントラル ヒーティングなどのプロパティの要素に関連しています。アプリが完了すると、約 50 の質問があります。各アクティビティには 3 つのスピナーと 2 つのエディット テキストがあり、ユーザーは次のアクティビティに進む前に、プロパティの関連要素の経過時間と状態に関するデータを入力する必要があります。

私の問題は次のとおりです。

質問 1 はキッチンに関するものです。関連するすべてのデータが入力されたら、(「次のページ」ボタンを介して) インテントを使用して、バスルームに関連する次のアクティビティを開始します。ただし、キッチン アクティビティのデータ入力でエラーが発生したことに気付き、バスルーム アクティビティからインテントを介して戻った場合 (キッチン アクティビティからバスルーム アクティビティに到達したのと同じ方法で)、以前に入力したデータはありません。より長くそこに。

このデータを保持するにはどうすればよいですか? アプリのユーザーがアンケートの質問の間を前後にフリックして、以前に入力したデータを表示できることが不可欠です。50 の質問すべてに回答すると、データがデータベースに保存され、次の物件を調査できるようになります。

これに対する答えを求めてインターネットやさまざまな本を調べましたが、矛盾する情報に遭遇しています。一時停止で使用すると言う人もいれば、停止すると言う人もいれば、保存されたインスタンスの状態で言う人もいます。よくわかりません??私はこれで3日間立ち往生しているので、どんな助けも大歓迎です.

以下のキッチンアクティビティに続いてバスルームアクティビティ........

    package com.example.basicview6;

import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class Kitchen extends Activity {

// defining the variables that will be displayed on the page
String[] age, renewal, main;
Spinner s1, s2, sMain;
ToggleButton repairs;
EditText repDesc, repCost, quantity;
Button back, next;
TextView life, qty, unit;

// creating the layout from the main xml file
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.kitchen);

    // getting the string array values from the 'strings xml' resources file
    // and applying them to the relevant variable
    age = getResources().getStringArray(R.array.age_array);
    renewal = getResources().getStringArray(R.array.renewal_array);
    main = getResources().getStringArray(R.array.kitchen_array);

    // getting the Spinner widget from the main xml and applying it to the
    // 's1' variable
    s1 = (Spinner) findViewById(R.id.spAge);
    s2 = (Spinner) findViewById(R.id.spRenewal);
    sMain = (Spinner) findViewById(R.id.spKitchen);
    repairs = (ToggleButton) findViewById(R.id.tbRepairs);
    repDesc = (EditText) findViewById(R.id.etRepDesc);
    repCost = (EditText) findViewById(R.id.etRepCost);
    quantity = (EditText) findViewById(R.id.etQuantity);
    back = (Button) findViewById(R.id.bBack);
    next = (Button) findViewById(R.id.bNext);
    life = (TextView) findViewById(R.id.tvLife);
    qty = (TextView) findViewById(R.id.tvQuantity);
    unit = (TextView) findViewById(R.id.tvUnitM);

    life.setVisibility(View.INVISIBLE);
    quantity.setVisibility(View.INVISIBLE);
    qty.setVisibility(View.INVISIBLE);
    unit.setVisibility(View.INVISIBLE);

    /*
     * creating a new 'string type' ArrayAdapter and telling it to display
     * the values of the relevant variable as a simple spinner item
     */
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, age);
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, renewal);
    ArrayAdapter<String> adapterM = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, main);

    // priming the s1 Spinner variable for an array item to be selected -
    // standby mode
    s1.setAdapter(adapter);
    s1.setOnItemSelectedListener(new OnItemSelectedListener() {

        // telling the program what to do when an item is selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }

    });
    s2.setAdapter(adapter2);
    s2.setOnItemSelectedListener(new OnItemSelectedListener() {

        // telling the program what to do when an item is selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }

    });
    sMain.setAdapter(adapterM);
    sMain.setOnItemSelectedListener(new OnItemSelectedListener() {

        // telling the program what to do when an item is selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }

    });

    // setting up the OnClickListerner for the repairs toggle button
    repairs.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            if (repairs.isChecked()) {
                repDesc.setVisibility(View.VISIBLE);
                repCost.setVisibility(View.VISIBLE);
            } else {
                repDesc.setVisibility(View.INVISIBLE);
                repCost.setVisibility(View.INVISIBLE);
            }

        }
    });
    // setting up the OnClickListener for the Next button
    next.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent openBathroom = new Intent(
                    "com.example.basicview6.BATHROOM");
            startActivity(openBathroom);

        }
    });

}

}

バスルームアクティビティ .................................

パッケージ com.example.basicview6;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;

public class 浴室はアクティビティを拡張します {

// defining the variables that will be displayed on the page
String[] age, renewal, main;
Spinner s1, s2, sMain;
ToggleButton repairs;
EditText repDesc, repCost, quantity;
Button back, next;
TextView life, qty, unit;

// creating the layout from the main xml file
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.bathroom);

    // getting the string array values from the 'strings xml' resources file
    // and applying them to the relevant variable
    age = getResources().getStringArray(R.array.age_array);
    renewal = getResources().getStringArray(R.array.renewal_array);
    main = getResources().getStringArray(R.array.bathroom_array);

    // getting the Spinner widget from the main xml and applying it to the
    // 's1' variable
    s1 = (Spinner) findViewById(R.id.spAge);
    s2 = (Spinner) findViewById(R.id.spRenewal);
    sMain = (Spinner) findViewById(R.id.spBathroom);
    repairs = (ToggleButton) findViewById(R.id.tbRepairs);
    repDesc = (EditText) findViewById(R.id.etRepDesc);
    repCost = (EditText) findViewById(R.id.etRepCost);
    quantity = (EditText) findViewById(R.id.etQuantity);
    back = (Button) findViewById(R.id.bBack);
    next = (Button) findViewById(R.id.bNext);
    life = (TextView) findViewById(R.id.tvLife);
    qty = (TextView) findViewById(R.id.tvQuantity);
    unit = (TextView) findViewById(R.id.tvUnitM);

    life.setVisibility(View.INVISIBLE);
    quantity.setVisibility(View.INVISIBLE);
    qty.setVisibility(View.INVISIBLE);
    unit.setVisibility(View.INVISIBLE);

    /*
     * creating a new 'string type' ArrayAdapter and telling it to display
     * the values of the relevant variable as a simple spinner item
     */
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, age);
    ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, renewal);
    ArrayAdapter<String> adapterM = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, main);

    // priming the s1 Spinner variable for an array item to be selected -
    // standby mode
    s1.setAdapter(adapter);
    s1.setOnItemSelectedListener(new OnItemSelectedListener() {

        // telling the program what to do when an item is selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }

    });
    s2.setAdapter(adapter2);
    s2.setOnItemSelectedListener(new OnItemSelectedListener() {

        // telling the program what to do when an item is selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }

    });
    sMain.setAdapter(adapterM);
    sMain.setOnItemSelectedListener(new OnItemSelectedListener() {

        // telling the program what to do when an item is selected
        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            int index = arg0.getSelectedItemPosition();

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
        }

    });

    // setting up the OnClickListerner for the repairs toggle button
    repairs.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            if (repairs.isChecked()) {
                repDesc.setVisibility(View.VISIBLE);
                repCost.setVisibility(View.VISIBLE);
            } else {
                repDesc.setVisibility(View.INVISIBLE);
                repCost.setVisibility(View.INVISIBLE);
            }

        }
    });
    // setting up the OnClickListener for the Back button
    back.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent openKitchen = new Intent(
                    "com.example.basicview6.KITCHEN");
            startActivity(openKitchen);

        }
    });

}

}

4

2 に答える 2

0

さまざまな方法を使用できるため、相反する答えが見られます。ただし、優先されるものがいくつかあります。

画面の回転、つまりデバイスが水平または垂直に反転している場合は、 を使用しますonSaveInstanceState

私が不正行為だと考えている別の方法がありますが、多くの人が近づかないようにと言うでしょう。ただし、これが最も簡単な方法です。マニフェストに移動して、この行を配置するだけです

android:configChanges="orientation|keyboardHidden|screenSize

に戻ったときに情報Activityが残っているように情報を保持しようとしている場合は、 を使用する必要がありますonPause()String、などの単純なデータのみを転送しているように見えますint。これは、SharedPreferences内で使用して行うことができますonPause()。その理由は、 が強制終了さonPause()れる前に常に (99% の確率で) 呼び出されるためActivityです。つまり、情報は常に保持されます。

これらのことを行う方法を示すいくつかのビデオ参照については、ここにアクセスしてくださいThe New Boston
ここで読みたい場合は、いくつかのリンクがあります

  1. 共有設定
  2. onPauseまたはonPause
  3. onSaveInstanceState

他に何か必要な場合は、お尋ねください。

于 2013-06-22T20:55:19.013 に答える
0

アクティビティを切り替えるときは、次のようにインテントにエクストラを配置できます: putExtra() :

intent.putExtra(Intent.EXTRA_TEXT, "my saved String");

そして、次のようにして、呼び出されたアクティビティでそれらを取得します。

String gottenString = intent.getExtras().getString(Intent.EXTRA_TEXT);

データを (一時) ファイルに保存することもできます。 ファイルの保存

于 2013-06-22T21:00:10.470 に答える