2016-06-10 56 views
1

我试图创建多个不同的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); 
      } 
     }); 
    } 
} 
+0

'Logs msgLog = new Logs();'不要这样做。 **从不**自己实例化一个活动 –

+0

*如何将它存储到一个变量中,以便它在访问它时总是存在?*如果“always”非常重要,那么您将不得不使用数据库。存储在一个对象中的数据将最多可用,直到您关闭该应用程序,然后它将会消失 –

+0

我明白了 - 非常感谢!我对应用程序开发很陌生,所以我的知识仍然非常有限,而这对我来说并不明显。我现在就放弃它:-) –

回答

0

您可以使用SharedPreferences存储这些数据。 如果您不希望在应用程序关闭后保存数据,则可以尝试另外一件事,那就是将数据存储在单独类的静态变量中。

相关问题