繁体   English   中英

将数据从一个活动发送到另一个活动

[英]Send data from one activity to another

我想将 main2Activity 的变量 indicatorpositionstart 的内容发送到 mainActivity。 我使用了“额外”的解决方案,但不起作用。

有什么问题?

    public class Main2Activity extends AppCompatActivity {

private Button imageValidate;
int indicatorPositionStart = 1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);

imageValidate = findViewById(R.id.buttonValidate);

imageValidate.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

Intent intent2 = new Intent(Main2Activity.this, MainActivity.class);
intent2.putExtra("indicatorPositionStartt", indicatorPositionStart );
startActivity(intent2);
}
});

}

    public class MainActivity extends AppCompatActivity{

int id = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

TextView textView = findViewById(R.id.textView3);

if (id != 0) {
int id = getIntent().getExtras().getInt("indicatorPositionStartt", 0);
String indicatorPositionStart = String.valueOf(id);

textView.setText(indicatorPositionStart);
}
}

}

先感谢您。

问题是您在从附加项中获取值之前正在检查值,请参阅第二个活动中的以下行:

// you are using it here, before getting the value
if (id != 0) {
int id = getIntent().getExtras().getInt("indicatorPositionStartt", 0);
String indicatorPositionStart = String.valueOf(id);

textView.setText(indicatorPositionStart);
}
}

MainActivity另一个问题是您没有填写 id 字段。 我修复了它,只需用你的第二个活动替换这个:

    public class MainActivity extends AppCompatActivity{

    int id = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    TextView textView = findViewById(R.id.textView3);

    // get the value first
    id = getIntent().getExtras().getInt("indicatorPositionStartt", 0);

    // then use it
    if (id != 0) {
        String indicatorPositionStart = String.valueOf(id);
        textView.setText(indicatorPositionStart);
    }
  }

}

在您的 MainActivity 中,删除此检查if (id !=0 )因为活动开始您设置了id =0的值,因此if (id !=0 ) this if 永远不会为真。

发送数据:

Intent intent = new Intent(this, SecondActivity.class); 
intent.putExtra("arg", YourData); 
startActivity(intent);

接收数据:

String data = getIntent().getExtras().getString("arg");

更新

删除if( id != 0)并使用if(getIntent().hasExtra("indicatorPositionStartt"))

像这样:

if (getIntent().hasExtra("indicatorPositionStartt")) {
int id = getIntent().getExtras().getInt("indicatorPositionStartt", 0);
String indicatorPositionStart = String.valueOf(id);

textView.setText(indicatorPositionStart);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM