我正在编写一个应用程序来进行调查并得出答案。该应用程序有一个默认问题“你喜欢维京人”,这是正常的。我在功能中添加了编辑问题&按钮,但现在默认都是空白。更糟糕的是,无论我在编辑活动中添加什么内容,它都是空白的!
public class MainActivity extends ActionBarActivity {
private Button mYesButton;
private Button mNoButton;
private Button mResultsButton;
private TextView mQuestionTextView;
private Button mEditButton;
private TextView EditQuestion;
private Button YesButtonEdit;
private Button NoButtonEdit;
int YesTimes;
int NoTimes;
public static final String EXTRA_EDIT_QUESTION = "com.example.surveyapp.EditActivity.edit_this_question";
//private SurveryQuestion[] mQuestionBank = new SurveryQuestion[] {
// new SurveryQuestion(R.string.question_1),
// new SurveryQuestion()
//};
String[] mSurveyArray = {
new String("hello"), //More questions coming soon!
new String("Hello1"),
//new String(R.string.question_1)
};
int mCurrentIndex = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mYesButton = (Button)findViewById(R.id.yes_button); //Yes/NoButton modified from LMGTFY app
mYesButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
YesTimes += 1;
mCurrentIndex = (mCurrentIndex + 1) % mSurveyArray.length;
// Coming soon!
}
});
mNoButton = (Button)findViewById(R.id.no_button);
mNoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
NoTimes += 1;
}
});
mResultsButton = (Button)findViewById(R.id.result_button);
mResultsButton.setOnClickListener(new View.OnClickListener() {
//Here we make toast!
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(), //Discovered getApplicationContext from stackoverflow
mYesButton + ": " + YesTimes + mNoButton + ": " + NoTimes, Toast.LENGTH_SHORT).show();
}
});
mEditButton = (Button)findViewById(R.id.edit_button); //This is the button that lets you edit the survey
mEditButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, EditActivity.class);
startActivity(i);
}
});
Intent intent = getIntent();
String EditQuestion = intent.getStringExtra("sendBack");
String YesButtonEdit = intent.getStringExtra("sendBack2");
String NoButtonEdit = intent.getStringExtra("sendBack3");
TextView mQuestionTextView = (TextView) findViewById(R.id.question_text_view);
Button mYesButton = (Button)findViewById(R.id.yes_button);
Button mNoButton = (Button)findViewById(R.id.no_button);
mQuestionTextView.setText(EditQuestion);
mYesButton.setText(YesButtonEdit);
mNoButton.setText(NoButtonEdit);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
这是您在编辑的回复中添加的第二个活动。
package com.example.surveyapp;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class EditActivity extends Activity {
private Button mCompleteButton;
private EditText mEditText1;
private EditText mEditText2;
private EditText mEditText3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
mCompleteButton = (Button)findViewById(R.id.CompleteButton);
mCompleteButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText mEditText1 = (EditText) findViewById(R.id.editText1);
EditText mEditText2 = (EditText) findViewById(R.id.editText2);
EditText mEditText3 = (EditText) findViewById(R.id.editText3);
Intent i = new Intent(EditActivity.this, MainActivity.class);
i.putExtra("SendBack", mEditText1.getText().toString()); //This is supposed to use EXTRA to send back the data
i.putExtra("SendBack2", mEditText2.getText().toString());
i.putExtra("SendBack3", mEditText2.getText().toString());
startActivity(i);
}
});
}
}
我尝试了几种方法,但我什么都没得到。有谁知道答案?
答案 0 :(得分:0)
我认为问题可能是当你打算startActivity
打算创建一个新的MainActivity
时,android会识别出已经存在这个活动的实例,所以它只是将它带到前面。
解决这个问题的一种方法是首先制作一个公共方法,用于编辑MainActivity
中的字段,然后您可以在将用户发送回之前调用此方法来自编辑活动的此活动。此外,不是创建新活动,只需关闭编辑活动,android将恢复主要活动。
如果这不起作用,请发布测试应用程序时的所有logcat数据。
答案 1 :(得分:0)
要获得干净且清晰的代码,请在onCreate()方法中初始化所有按钮对象。现在尝试将以下代码放在onResume回调方法中,如下所示
@Override
public void onResume()
{
super.onResume();
Intent intent = getIntent();
String EditQuestion = intent.getStringExtra("sendBack");
String YesButtonEdit = intent.getStringExtra("sendBack2");
String NoButtonEdit = intent.getStringExtra("sendBack3");
TextView mQuestionTextView = (TextView) findViewById(R.id.question_text_view);
Button mYesButton = (Button)findViewById(R.id.yes_button);
Button mNoButton = (Button)findViewById(R.id.no_button);
mQuestionTextView.setText(EditQuestion);
mYesButton.setText(YesButtonEdit);
mNoButton.setText(NoButtonEdit);
}
从onCreate(...)方法中删除此代码并将其放在onResume方法中。当您按下编辑按钮并想要在编辑活动中获取数据时,请从调用活动中执行此操作
mEditButton = (Button)findViewById(R.id.edit_button); //This is the button that lets you edit the survey
mEditButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, EditActivity.class);
i.putExtra("sendBack","send back value");
i.putExtra("sendBack2","send back 2 value");
startActivity(i);
}
});
有了这个,您现在应该能够在EditActivity中修改和传递您想要修改的值