切换活动时保存活动状态

时间:2019-10-27 18:59:07

标签: java android android-studio

我当前正在尝试创建一个活动,该活动应该在每次单击第一个活动的按钮时在我的主要活动上创建一个新的TextView。但是,不是每次单击按钮都创建一个新的TextView,它只是更改了第一个创建的TextView的值,因此始终只有一个TextView。有没有一种方法可以使我的第一个活动不仅创建单个textview?

这是我的“ NewSubjectActivity”中的代码:

**public class NewSubjectActivity extends AppCompatActivity {

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

    Button SaveBtn = findViewById(R.id.SaveBtn);
    nsaSaveBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Click();
        }
    });
}



protected void Click(){

    Intent intent = new Intent(NewSubjectActivity.this, MainActivity.class);

    Boolean createnewTextView = true;

    intent.putExtra("createnewTextView",createnewTextView);
    startActivity(intent);
}

}

这是我的MainActivity中的(相关)代码:

 protected void ReceiveValue (){


    //getting Extras
    Intent nsareceivedvalues = getIntent();


        boolean createTextView = false;
        createTextView = nsareceivedvalues.getExtras().getBoolean("createnewTextView");

        //declaring fixed Views
        final LinearLayout mainLinearLayout = (LinearLayout)findViewById(R.id.mainLinearLayout);




        //Params for TextView
        RelativeLayout.LayoutParams Params = new RelativeLayout.LayoutParams(1000, 200);
        Params.setMargins(0, 10, 0, 10);

        while(createTextView) {
            //creating a TextView
            TextView newsubject = new TextView(MainActivity.this);

            //applying values to the TextView
            newsubject.setLayoutParams(Params);
            newsubject.setGravity(CENTER);
            newsubject.setBackgroundColor(Color.GRAY);

            mainLinearLayout.addView(newsubject);
            createTextView = false; 
        }

}

就像我说的那样,每次我按“ NewSubjectActivity”上的按钮时,这只会创建一个文本视图,因为以前的文本视图不会保存,并且每次在活动之间切换时MainActivity都会重置。

每一个帮助和建议都非常感谢<3

1 个答案:

答案 0 :(得分:0)

也许当您返回到主要活动时,应该调用onBackPressed()函数,因此它将完全不重置任何内容。这是科特林的例子

val back_button:Button = findViewById(R.id.button2)
    back_button.setOnClickListener { v -> run {
        //Change activity
        onBackPressed()
} }
Java中的

应该是:

Button back_button = findViewById(R.id.button2);
back_button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //Change activity
        onBackPressed()
    }
});

希望它能起作用!