2013-12-09 32 views
2

我可以从主活动中将数据显示保存在屏幕上的变量sbprint中。我从缓冲蓝牙数据的后台活动中获得的可变sbprint。我想将屏幕上显示的数据记录到另一个班级。 问题是我不能使用序列化,因为数据总是从我的蓝牙模块实时模式流。基于here如何将数据从后台进程传递到另一个活动

我用处理器从数据更新我的UI代码缓冲 注:我得到的内部处理程序共享偏好(这是内部MainActivity.java)

h = new Handler() { 
      public void handleMessage(android.os.Message msg) { 
       switch (msg.what) { 
       case RECIEVE_MESSAGE:             // if receive massage 
        byte[] readBuf = (byte[]) msg.obj; 
        String strIncom = new String(readBuf, 0, msg.arg1);     // create string from bytes array 
        sb.append(strIncom);            // append string 
        int endOfLineIndex = sb.indexOf("\r\n");       // determine the end-of-line 
        if (endOfLineIndex > 0) {           // if end-of-line, 
         String sbprint = sb.substring(0, endOfLineIndex);    // extract string 
         sb.delete(0, sb.length());          // and clear 
         txtArduino.setText("Data from Arduino: " + sbprint);   // update TextView 

         SharedPreferences logPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this); 
         SharedPreferences.Editor editor = logPreferences.edit(); 
         String textLog = txtArduino.getText().toString(); 
         editor.putString("log", textLog); 
         editor.commit(); 

        } 
        //Log.d(TAG, "...String:"+ sb.toString() + "Byte:" + msg.arg1 + "..."); 
        break; 
       } 
      }; 
     }; 

的H处理程序得到的消息对象基于此命令的蓝牙文档ConnectedThread类,

h.obtainMessage(RECIEVE_MESSAGE, bytes, -1, buffer).sendToTarget();  // Send to message queue Handler 

我的问题是,我怎么使用处理器就像上面传递变量sbprint到我的新屏幕的类。

这里是我如何从另一个数据中接收数据。我从共享偏好得到传递变量缓冲区中的数据的建议

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_datalog); 

     tvDatalog = (TextView) findViewById(R.id.tvDatalog); 

     SharedPreferences logPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
     String text = logPreferences.getString("log", "null"); 
     tvDatalog.setText(text+"\r\n"); 
    } 

注: 我从我的MainActivity数据,但好像我的AsyncTask的作品在我的MainActivity停止的画面切换到另一个类。我如何让我的背景活动也适用于这两个类。我的意思是每当我改变我的屏幕到另一个背景活动始终工作。

+1

我不确定它是否适用于您,但您可以将数据存储在共享偏好设置中并在应用程序中的任何位置检索它。不要使用serialisable,因为它会让你的应用程序太慢。 – Hesam

+0

是的,我知道这一点。任何关于共享偏好的推荐链接? –

+0

最佳参考是Android文档。请参考以下链接:http://developer.android.com/training/basics/data-storage/shared-preferences.html – Hesam

回答

1

如果我理解正确,您可能需要使用一个接口。您可以在包含HandlerActivity中定义一个接口。然后,您可以在所需的Class中实现接口。

+0

对不起,我刚刚听到了界面的东西。这种传递数据的方式就像意图一样吗?为什么我要使用界面?谢谢 –

+0

接口的用法之一是创建一个回调(即像'onClickListener()'这样的监听器),这是你在这种情况下可能需要的。查看链接以获取更详细的解释http://docs.oracle.com/javase/tutorial/java/concepts/interface.html – Emmanuel

相关问题