int/string 值在从一个活动传递到另一个活动时变为 "0" /null



我有两种活动,主要活性和第二个活动。在将int值从主要活性转移到第二级的同时,它变为" 0"。我已经尝试过有没有捆绑的尝试,尝试了在Stackoverflow上已经存在的各种解决方案,但没有去。

这是我的代码:MainAttivity

final Intent intent = new Intent(MainActivity.this, SecondActivity.class);
    final TextView textView = findViewById(R.id.textView);
    textView.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v){
            Bundle bundle = new Bundle();
            bundle.putInt("category",9);
            intent.putExtras(bundle); 
            startActivity(intent);
        }
    });

第二次:

    package com.example.app;
    import android.content.Intent;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;

    public class SecondActivity extends AppCompatActivity {   
    ViewPager viewPager;
    TabsPagerAdapter pagerAdapter;
    private int mMedCategory = 6;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
       // String stringCategory = getIntent().getStringExtra("category_string");
    int medCategory = getIntent().getIntExtra("category_int", -1);
    setMedCategory(medCategory);
    viewPager = findViewById(R.id.viewpager);
    pagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());
    viewPager.setAdapter(pagerAdapter);
    }
    public int getMedCategory(){
        return mMedCategory; //This value goes to TabsPagerAdapter
    }
    public void setMedCategory(int i){
        mMedCategory = i;
    }
    }

您可以尝试以下方法:

MainActivity

TextView textView = findViewById(R.id.textView);
textView.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, SecondActivity.class);
        intent.putExtra("category_int", 9);
        intent.putExtra("category_string", "9");
        startActivity(intent);
    }
});

secondActivity

private int medCategoryInt;
private String medCategoryString;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second);
    medCategoryInt = getIntent().getIntExtra("category_int", 0);
    medCategoryString = getIntent().getStringExtra("category_string");
}

您可以查看如何在Android应用程序中的活动之间传递数据?

使用 Intent#getIntExtra()从意图中检索整数值:

来自MainActivity

Intent myIntent = new Intent(MainActivity.this, SecondActivity.class);
myIntent.putExtra("category", 9);
MainActivity.this.startActivity(myIntent);

来自SecondActivity

@Override
protected void onCreate(Bundle savedInstanceState) {
    Intent intent = getIntent();
    medCategory = intent.getIntExtra("category", -1);
}

请注意,如果找不到密钥,这将分配-1的默认值为medCategory

我不确定,但是您可以将其用于第二个活动:

SecondActivity secondActivity = new SecondActivity();
    if (secondActivity.getIntent.getExtras() != null)
    {
        int medCat = secondActivity.getIntent.getExtras().getInt("category");
    }

使用此代码。删除最终结果,并尝试以不在之外的OnClick方法初始化意图。

在您的onclick

Intent intent=new Intent(this,Main2Activity.class);
    Bundle bundle = new Bundle();
    bundle.putInt("category",9);
    intent.putExtras(bundle);
    startActivity(intent);

在您的第二个活动中

public class Main2Activity extends AppCompatActivity {
private int mMedCategory =0;
public int getmMedCategory() {
    return mMedCategory;
}
public void setmMedCategory(int mMedCategory) {
    this.mMedCategory = mMedCategory;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    Bundle bundle=getIntent().getExtras();
    if(bundle!=null){
        int demoCategory =bundle.getInt("category");
        setmMedCategory(demoCategory);
    }else {
        Toast.makeText(this, "null", Toast.LENGTH_SHORT).show();
    }
}
public void Show(View view) {
    Toast.makeText(this, String.valueOf(getmMedCategory()), Toast.LENGTH_SHORT).show();
}

}

编辑

为您创建一个演示项目。显示方法是按钮的onclick方法。

最新更新