【问题标题】:how can I send the data to the next activity using bundle in android studio如何在 android studio 中使用 bundle 将数据发送到下一个活动
【发布时间】:2022-06-17 17:15:37
【问题描述】:

这是详细活动...我正在使用 putExtra 将数据从该活动发送到下一个活动

public class Detail_Activity extends AppCompatActivity {

    ImageView ivImage2;
    TextView txtDescription, txtName, txtPrice;
    String key = "";
    String imageUrl = "";
    Button delete_Recipe, update_Recipe;

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

        ivImage2 = (ImageView)findViewById(R.id.ivImage2);
        txtDescription = (TextView) findViewById(R.id.txtDescription);
        txtName = (TextView) findViewById(R.id.txtName);
        txtPrice = (TextView) findViewById(R.id.txtPrice);
        delete_Recipe = (Button) findViewById(R.id.delete_Recipe);
        update_Recipe = (Button) findViewById(R.id.update_Recipe);

        update_Recipe.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                startActivity(new Intent(Detail_Activity.this, Upload_Recipe.class)
                        .putExtra("recipeNameKey", txtName.getText().toString())
                        .putExtra("recipeDescriptionKey",  txtDescription.getText().toString())
                        .putExtra("recipePriceKey",  txtPrice.getText().toString())
                        .putExtra("oldimageUrl", imageUrl)
                        .putExtra("key",key)
             );
            }
        });

**这是更新活动...在这个活动中,数据不显示或不显示接收到的数据,而代码是正确的**

public class Update_Activity extends AppCompatActivity {

    ImageView update_Recipe_Image;
    EditText update_Recipe_Name, update_Recipe_Description, update_Recipe_Price;
    Button updatebutton;
    Uri uri;
    ActivityResultLauncher<String> mContent;
    String imageUrl;

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

        update_Recipe_Image = (ImageView) findViewById(R.id.update_Recipe_Image);
        update_Recipe_Name = (EditText) findViewById(R.id.update_Recipe_Name);
        update_Recipe_Description = (EditText) findViewById(R.id.update_Recipe_Description);
        update_Recipe_Price = (EditText) findViewById(R.id.update_Recipe_Price);
        updatebutton = (Button) findViewById(R.id.updatebutton);

        Bundle bundle = getIntent().getExtras();
        if (bundle != null){
            Glide.with(Update_Activity.this)
                    .load(bundle.getString("oldimageUrl"))
                    .into(update_Recipe_Image);
            update_Recipe_Name.setText(bundle.getString("recipeNameKey"));
            update_Recipe_Description.setText(bundle.getString("recipeDescriptionKey"));
            update_Recipe_Price.setText(bundle.getString("recipePriceKey"));

        }
    }
}

logcat 中没有任何错误。

【问题讨论】:

  • 根据您的点击代码,Upload_Recipe 是从您的 Detail_Activity 而不是 Update_Activity 启动的。

标签: android android-intent bundle send


【解决方案1】:
startActivity(new Intent(Detail_Activity.this, Upload_Recipe.class)
                        .putExtra("recipeNameKey", txtName.getText().toString())

尝试使用 .putExtra 创建意图,然后将其作为 startActivity 的参数。如果您想传递数据来更新活动,您需要将意图的目的地提供给该活动,例如:

Intent myIntent= new Intent(Detail_Activity.this, Update_Activity.class)
                        .putExtra("recipeNameKey", txtName.getText().toString())
startActivity(myIntent)

【讨论】:

    【解决方案2】:

    您不是在捆绑中传递数据,而是使用intent 直接传递数据。因此,您可以像这样在下一个屏幕中接收您的数据:

     if (getIntent() != null){
                Glide.with(Update_Activity.this)
                        .load(getIntent().getStringExtra("oldimageUrl"))
                        .into(update_Recipe_Image);
                update_Recipe_Name.setText(getIntent().getStringExtra("recipeNameKey"));
                update_Recipe_Description.setText(getIntent().getStringExtra("recipeDescriptionKey"));
                update_Recipe_Price.setText(getIntent().getStringExtra("recipePriceKey"));
    
            }
    

    只需在您的Update_Activity 中将bundle.getString 替换为getIntent().getStringExtra

    【讨论】:

      【解决方案3】:

      注意这里有 3 个活动。 Detail_Activity。 Upload_Recipe(是活动吗?),Update_Activity。您应该使用目标类创建 Intent。

      Intent intent = new Intent ( DetailActivity.this, Update_Activity.class) ....
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-30
        • 2014-05-03
        • 2012-09-28
        • 1970-01-01
        相关资源
        最近更新 更多