【发布时间】:2016-07-21 23:03:15
【问题描述】:
这是我的第一个问题。对不起愚蠢。 我的任务是在 android 上创建一个电话簿。我很生气,很沮丧,很生气,因为我不知道该怎么做。
所以我决定一开始做一个非常简单的应用程序。
假设,我有 mainActivity。那里有一个 EditText,我输入一些字符串。然后我按下一个按钮,看到 Activity 2。我按下一个按钮回到 mainActivity,我想看到代表之前输入的字符串的 TextView。 问题是字符串为空(( 在 mainActivity 暂停我的变量之前,我的变量没有保存? 我怎样才能保存它们?
Contact Book 应用也有同样的想法。我创建新联系人,将其传递给意图,返回 MainActivity,但联系人的 ArrayList 只有新联系人。其余数据丢失(
主要活动:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
TextView txtsavedValue;
EditText edtInput;
Button btnTo2;
String string, str;
int integer1;
String LOG_TAG = MainActivity.class.getSimpleName();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
btnTo2 = (Button) findViewById(R.id.btnSendTo2);
btnTo2.setOnClickListener(this);
txtsavedValue = (TextView) findViewById(R.id.txtSavedValue);
edtInput = (EditText) findViewById(R.id.editTextInput);
if (savedInstanceState != null) {
string = savedInstanceState.getString("mykey");
Log.v(LOG_TAG, string);
txtsavedValue.setText(string);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onClick(View view) {
string = (edtInput.getText().toString());
Log.v(LOG_TAG, string);
Intent intent = new Intent(this, Main2Activity.class);
startActivity(intent);
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putString("mykey", string);
super.onSaveInstanceState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Log.v(LOG_TAG, "truuue");
string = savedInstanceState.getString("mykey");
txtsavedValue.setText(string);
}
@Override
protected void onResume() {
super.onResume();
if (string != null) {
Log.v(LOG_TAG, string);
txtsavedValue.setText(string);
} else Log.v(LOG_TAG, "nulll");
}
}
Main2Activity:
public class Main2Activity extends AppCompatActivity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
Button b = (Button) findViewById(R.id.btnTo1);
b.setOnClickListener(this);
}
@Override
public void onClick(View view) {
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
}
【问题讨论】:
-
您可能应该更清楚地编码。尤其是日志,让日志为您工作,并让它们为您提供有用的信息,以识别代码是如何流动的。