我是Android的新手,刚刚学习了面向对象编程。我的项目需要我在开源代码上构建一些东西。我真的很纠结于这个特例。activity_main下有两个片段,其中一个是TerminalFragment。如果TerminalFragment在activity_main下处于活动状态,则来自BLE设备的数据将继续流入activity_main。是否有可能在不单击按钮(在本例中为menuItem(R.id.plot))的情况下将数据传递给下一个活动?我在activity_main2上添加了一个recyclerview,并希望它显示activity_main中流动的数据。
在我的测试与我当前的方法,回收器视图不会更新自己,它只是捕获的数据在activity_main与TerminalFragment的回收视图一旦用户单击menuItem (id,plot)。我需要在方法中添加什么样的东西?我应该创建另一个片段而不是activity_main2吗?当我在网上查到这一点时,似乎不可能在片段和下一个活动之间以这种方式工作。感谢。
onOptionsItemSelected of TerminalFragment
if (id == R.id.plot){
Intent intent = new Intent(getActivity(), MainActivity2.class);
intent.putExtra("output",output); //output
startActivity(intent);
return true;
}
receive() of TerminalFragment
private void receive(byte[] data) {
if(hexEnabled) {
receiveText.append("Hello" + TextUtil.toHexString(data) + 'n');
} else {
String msg = new String(data);
if(newline.equals(TextUtil.newline_crlf) && msg.length() > 0) {
// don't show CR as ^M if directly before LF
msg = msg.replace(TextUtil.newline_crlf, TextUtil.newline_lf);
// special handling if CR and LF come in separate fragments
if (pendingNewline && msg.charAt(0) == 'n') {
Editable edt = receiveText.getEditableText();
if (edt != null && edt.length() > 1)
edt.replace(edt.length() - 2, edt.length(), "");
}
pendingNewline = msg.charAt(msg.length() - 1) == 'r';
}
receiveText.append(TextUtil.toCaretString(msg, newline.length() != 0)); //print out data
output = receiveText.getText().toString(); // CharSequence to String
}
}
OnCreate的mainActivity2, *receiveData()是添加数据到recycleview
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Toolbar toolbar = findViewById(R.id.toolbar2);
setSupportActionBar(toolbar);
recyclerView = findViewById(R.id.dataflow);
dataList = new ArrayList<>();
String data;
Bundle extras = getIntent().getExtras();
if (extras != null)
{
data = extras.getString("output");
receiveData(data);
}
setAdapter();
}
我认为你的问题是未知的如何获得activity_main数据到activity_main2动态,你可以用户"EventBus";要动态地解决数据更新,无论您使用另一个fragment或activity_main2。