java - 如何将数据存储在对象而不是类中

标签 java android oop android-studio

我正在尝试创建一个具有多个不同 xml View /类的消息传递应用程序:

主菜单(MainActivity);

一个用于发送消息屏​​幕(SendMsg);

用于存储已发送消息(日志)。

SendMsg 中,我想将消息存储到一个名为 msgLog 的对象中,该对象是我在 MainActivity 中创建的。只是为了测试,我将 SendMsg 设置为在按下 SEND 按钮时显示 Logs 类,并且发送的消息确实出现在此处。

但是,它没有将其存储到我创建的 msgLog 变量中,因此我无法从 MainActivity 再次访问。

如何将其存储到变量中,以便在访问它时它始终存在?任何帮助将不胜感激。

============================================================

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);
            }
        });
    }
}

最佳答案

您可以使用 SharedPreferences 来存储此类数据。 如果您不想在应用程序关闭后保存数据,您可以尝试的另一件事是将数据存储在单独类的静态变量中。

关于java - 如何将数据存储在对象而不是类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743546/

相关文章:

java - Gradle 排除依赖项中的特定文件

java - 在 Java 中使用数据库结果动态构建 JSON

android - 将 JSON 格式的 OpenCV 图像从 Python 发送到 Android

JavaScript 私有(private)方法

java - 泛型:为什么实现的集合返回一个对象而不是指定的类型?

java - Grappa Graphviz 点可视化问题和问题

android - boost 库: Android

android - 如何在 Recycler View 中使用多行编辑文本

php - OOP方式的蛋鸡问题

javascript - 可以让 javascript 对象返回值而不是 self 吗?