android - 使用意图从类向 MainActivity 发送数据时出错
问题描述
在我的 MainActivity 中,我需要知道布尔类型变量的状态以隐藏或使图标可见,但是这个变量是在另一个名为 TcpClient 的类中生成的,该类被 MainActivity 调用了几次,我正在尝试使用意图发送这个TcpClient 类中的变量,但我有错误。
这是我的 MainActivity 代码:
public class MainActivity extends AppCompatActivity implements
NavigationView.OnNavigationItemSelectedListener {
private TcpClient mTcpClient;
public boolean statusWIFI = false;
.
.
public class ConnectTask extends AsyncTask<String, String, TcpClient> {
@Override
protected TcpClient doInBackground(String... message) {
mTcpClient = new TcpClient(new TcpClient.OnMessageReceived() {
@Override
//here the messageReceived method is implemented
public void messageReceived(String message) { //we create a TCPClient object and
publishProgress(message); //this method calls the onProgressUpdate
}
});
mTcpClient.run();
return null;
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
//arrayList.add("RX: " + values[0]); //in the
arrayList we add the messaged received from server
mDumpTextView.append( values[0] );
mDumpTextView.append( "\n" );
mScrollView.smoothScrollTo( 0, mDumpTextView.getBottom() );
mAdapter.notifyDataSetChanged(); // notify the
adapter that the data set has changed. This means that new message
received
// from server was added to the list
}
}
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
MenuItem IconWIFI = menu.findItem(R.id.bt1_wifi);
Intent intent = getIntent();
Bundle bundle = null;
bundle = getIntent().getExtras();
if (bundle !=null) {
statusWIFI = bundle.getBoolean( "mstatusWIFI");
}
if (statusWIFI == true){
IconUsbON.setVisible(true);
}else{
IconUsbON.setVisible(false);
}
return true;
}
这是我的 TcpClient 类的代码:
public class TcpClient {
private Boolean statusWIFIX = false;
.
.
public void stopClient() {
statusWIFIX = false;
Intent intent = new Intent( this, MainActivity.class );
intent.putExtra( "mstatusWIFI", statusWIFIX );
startActivityForResult( intent, 0 );
sendMessage(Constants.CLOSED_CONNECTION+": " + Modelox);
// send message that we are closing the connection
mRun = false;
if (mBufferOut != null) {
mBufferOut.flush();
mBufferOut.close();
}
mMessageListener = null;
mBufferIn = null;
mBufferOut = null;
mServerMessage = null;
}
这是错误;有人可以告诉我如何纠正这个
解决方案
我没有看到任何初始化mTcpClient
,你需要像这样初始化它:
mTcpClient= TcpClient();
如果您的变量在 TcpClient 类中,您可以通过mTcpClient.statusWIFIX
您还需要像这样公开 statusWIFIX 范围:
public Boolean statusWIFIX = false;
在你的TcpClient
课上。
您也可以通过意图发送数据,但仅用于访问 statusWIFIX 以再次启动活动不是一个好方法。
推荐阅读
- python - 如何使用 sklearn 的 SGDClassifier 返回前 N 个预测的准确率?
- php - 使用php生成站点的镜像
- php - 我可以使用什么查询来获取每个类别的子类别?
- c++ - 此代码后缀和前缀在一行c ++中的相同变量的输出背后的逻辑是什么
- java - 如何按数字顺序处理多个索引
- android - 更新功能在 PC 上始终有效,但在移动设备上不可用
- xcode - 故事板和“自 iOS 11.0 以来不推荐使用底部布局指南”警告
- c# - 从多对多 EF Core 实体在剃须刀页面中构建复选框列表
- excel - 基于多个标准的价值排名
- python - 如何从推文中删除主题标签和@提及?- 蟒蛇/熊猫