我试图创建多个不同的XML视图/班消息传递应用程序数据:如何存储在一个对象,而不是一类
一个主菜单(MainActivity);
一个用于发送消息的屏幕(SendMsg);
一个用于存储发送的消息(日志)。
在SENDMSG,我想我的信息存储到一个名为MSGLOG的对象,这是我在MainActivity创造。仅用于测试,我已经设置SendMsg在按下SEND按钮时显示日志类,并且发送的消息确实出现在那里。
但是,它不将它存储到我创建的,所以我不能从MainActivity再次访问MSGLOG变量。
如何将它存储到一个变量中,以便在访问它时它总是在那里?任何帮助将非常感激。
============================================== ===========
public class MainActivity extends AppCompatActivity {
Logs msgLog = new Logs();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendOnClick (View view){
Intent intent = new Intent("com.example.android.attone.SendMsg");
startActivity(intent);
}
public void logsOnClick (View view){
Intent intent = new Intent(this, Logs.class);
startActivity(intent);
}
}
================================ =========================
public class SendMsg extends AppCompatActivity {
EditText txtPhoneNo;
EditText txtMessage;
Button btnSend;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_send_msg);
txtPhoneNo = (EditText) this.findViewById(R.id.txtPhoneNo);
txtMessage = (EditText) this.findViewById(R.id.txtMessage);
btnSend = (Button) this.findViewById(R.id.btnSend);
btnSend.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
// Get phone number and message sms
String phoneNo = txtPhoneNo.getText().toString();
String message = txtMessage.getText().toString();
Intent writeLog = new Intent(getApplicationContext(), Logs.class);
writeLog.putExtra("link", message);
startActivity(writeLog);
// If phone number and message is not empty
if (phoneNo.length() > 0 && message.length() > 0)
{
sendMessage(phoneNo, message);
}
else
{
Toast.makeText(getBaseContext(), "Please enter both number and message", Toast.LENGTH_LONG).show();
}
}
});
}
// Function send message sms
private void sendMessage(String phoneNo, String message)
{
try
{
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent", Toast.LENGTH_LONG).show();
}
catch (Exception e)
{
Toast.makeText(getApplicationContext(), "SMS failed. Please try again!", Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
}
================== =======================================
public class Logs extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_logs);
String logging = getIntent().getStringExtra("link");
TextView textView = (TextView) findViewById(R.id.txtLog);
textView.setText(logging);
Button log2menu = (Button)findViewById(R.id.logToMenu);
log2menu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(), MainActivity.class);
startActivity(intent);
}
});
}
}
'Logs msgLog = new Logs();'不要这样做。 **从不**自己实例化一个活动 –
*如何将它存储到一个变量中,以便它在访问它时总是存在?*如果“always”非常重要,那么您将不得不使用数据库。存储在一个对象中的数据将最多可用,直到您关闭该应用程序,然后它将会消失 –
我明白了 - 非常感谢!我对应用程序开发很陌生,所以我的知识仍然非常有限,而这对我来说并不明显。我现在就放弃它:-) –