我的Android应用程序有一个主Intent
用户登录。之后,它会加载另一个Intent
带箭头按钮,一些标签,一个进度条和一些输入组件,这些组件在用户交替显示点击按钮转到另一个问题(研究表格)。对于每个问题,标签都会更改,某些组件会隐藏,而其他组件会显示。但是如果用户旋转设备,Intent会重置各种类型,因为它会返回第一个问题。
第二个Intent的代码是:
public void onClick(View v)
{
if ((!selectedFormCode.equalsIgnoreCase("")) && (!userCode.getText().toString().equals("")))
{
Intent questionScreen = new Intent();
questionScreen.setClassName("com.android.artemis", "com.android.artemis.QuestionScreen");
func.ShowMessage("Aguarde,\nCarregando o Formulário...");
// envia as configurações para a tela de entrevista
questionScreen.putExtra("formProperties", formProperties.toString());
questionScreen.putExtra("selectedFormCode", selectedFormCode);
questionScreen.putExtra("selectedRegionCode", selectedRegionCode);
questionScreen.putExtra("selectedSubRegionCode", selectedSubRegionCode);
questionScreen.putExtra("selectedRegionLabel", selectedRegionLabel);
questionScreen.putExtra("selectedSubRegionLabel", selectedSubRegionLabel);
questionScreen.putExtra("userRegistrationCode", userCode.getText().toString());
startForm.setEnabled(false); // evita que o usuário clique mais de uma vez
startActivity(questionScreen);
startForm.setEnabled(true);
}
else
{
func.ShowMessage("Complete todas as Informações antes de Continuar!");
}
}
第二个Intent加载时触发的代码是:
super.onAttachedToWindow();
try {
// recebe informações vindas da tela inicial
selectedFormCode = getIntent().getStringExtra("selectedFormCode");
selectedRegionCode = getIntent().getStringExtra("selectedRegionCode");
selectedSubRegionCode = getIntent().getStringExtra("selectedSubRegionCode");
selectedRegionLabel = getIntent().getStringExtra("selectedRegionLabel");
selectedSubRegionLabel = getIntent().getStringExtra("selectedSubRegionLabel");
userRegistrationCode = getIntent().getStringExtra("userRegistrationCode");
formProperties = new JSONObject(getIntent().getStringExtra("formProperties"));
//ArrayList<JSONObject> formList;
//JSONObject mainData = new JSONObject(func.getTextAssetFile("forms.dat"));
//formList = func.getJSONArrayList(mainData.get("forms").toString());
//formProperties = formList.get(func.getIndexFromObject(formList, selectedFormCode));
// inicializa a tela
formLabel.setText(formProperties.get("l").toString()); // label
customEdit.clearFocus();
// inicializa variáveis a serem usadas na entrevista
totalQuestion = (Integer) formProperties.get("total");
questionAnswer = new String[totalQuestion];
subQuestionAnswer = new String[totalQuestion];
questionsData = formProperties.getJSONArray("questions");
// recupera a informação de quantidade de entrevistas feitas deste formulário, por este entrevistador
SharedPreferences settings = getSharedPreferences(selectedFormCode, 0);
totalInterview = settings.getInt(userRegistrationCode, 0);
// inicia uma nova entrevista depois que configura a tela
startNewInterview();
/*
// Inicialização de uma sessão do dropbox para sincronização de arquivos de entrevistas
AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
AndroidAuthSession session = new AndroidAuthSession(appKeys, ACCESS_TYPE);
mDBApi = new DropboxAPI<AndroidAuthSession>(session);
//
SharedPreferences dbas = getSharedPreferences("SPM", 0);
AccessTokenPair access = new AccessTokenPair(dbas.getString("dropboxKey", ""),dbas.getString("dropboxSecret", ""));
mDBApi.getSession().setAccessTokenPair(access);
mDBApi.getSession().startAuthentication(this);
*/
}
catch (JSONException e)
{
e.printStackTrace();
func.ShowMessage("Não foi possível decodificar as propriedades do formulário de pesquisa. \nErro Fatal! \nLibere mais Memória!!");
}
}
和
public void startNewInterview() // inicializa uma nova entrevista
{
// reinicia a barra de progresso
currentQuestion = 1;
progressBar.setMax(totalQuestion);
progressBar.setProgress(currentQuestion);
// limpar as variáveis de respostas
for (int i = 0; i < totalQuestion; i++)
{
questionAnswer[i] = "";
subQuestionAnswer[i] = "";
}
// inicializar o relógio
func.startChronometer();
startTime = func.getChronometerTime();
// determinat o momento do início da entrevista
Date now = new Date();;
SimpleDateFormat formatTime = new SimpleDateFormat(dateMask);
interviewDate = formatTime.format(now);
formatTime = new SimpleDateFormat(hourMask);
interviewHour = formatTime.format(now);
// ir para a primeira questão
goQuestion(currentQuestion);
}
答案 0 :(得分:1)
在Manifest
<activity
android:name="MyActivity"
android:configChanges="orientation|keyboard|keyboardHidden"
android:screenOrientation="sensor" />