【问题标题】:Passing rand variable from one class to another with same value将rand变量从一个类传递到另一个具有相同值的类
【发布时间】:2017-03-22 01:12:40
【问题描述】:

尝试在一个类中传递一个随机生成的变量以在另一个类中使用,以同步我的应用程序的背景和另一个片段中的标题。

public class LoginMain extends AppCompatActivity {
    RelativeLayout loginMain;
    Random rand = new Random();
    int bgPick = rand.nextInt(5) + 1; //distribute int from 1 to 3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_main);
        //must be called after the content view is set.
        loginMain = (RelativeLayout) findViewById(R.id.activity_login_main);
        randomBG();//method that determines the background image based on the bgPick value.
    }

    public static int getBgPick(){
        return bgPick;
    }

主类:

public class MainActivity extends AppCompatActivity {
    AppBarLayout appBarLayout;
    int bgPick = LoginMain.getBgPick();


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

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
        randomHeader();//method to determine header image based on bgPick value determined in the LoginMain class.

这导致在每个类中分别生成和使用两个 bgPick 值。

【问题讨论】:

标签: java android variables random


【解决方案1】:

你应该考虑使用intent 例如,如果您想将项目从一个类传递到另一个类。

 Intent intent =new Intent(FirstActivity.this,SecondAcitivity.class);
 intent.putExtra("EXTRA_SESSION_ID", sessionId);
 intent.putExtra("EXTRA_String", "California");
 startActivity(intent);

在SecondActivity中;

String s = getIntent().getStringExtra("EXTRA_SESSION_ID");
String place = getIntent().getStringExtra("EXTRA_String");

【讨论】:

  • 我不认为我可以使用它只是因为我已经在同一个活动中使用 Intent 来转换到另一个活动,并且当尝试使用带有随机生成的变量的 .putExtra 时会出现一些奇怪的行为.我下面的解决方案充分解决了我的问题。
【解决方案2】:

使用StaticgetBgPick方法解决。

public class LoginMain extends AppCompatActivity {
    RelativeLayout loginMain;
    Random rand = new Random();
    public static int bgPick;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_main);
        this.bgPick = rand.nextInt(5) + 1; //distribute int from 1 to 3
        //must be called after the content view is set.
        loginMain = (RelativeLayout) findViewById(R.id.activity_login_main);
        randomBG();
    }

    public static int getBgPick(){
        return bgPick;
    }
}

主类:

public class MainActivity extends AppCompatActivity {    
    AppBarLayout appBarLayout;
    int bgPick = LoginMain.getBgPick();


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

        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        appBarLayout = (AppBarLayout) findViewById(R.id.appbar);
        randomHeader();
    }
}

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 2014-01-03
    相关资源
    最近更新 更多