在活动之间传递视图

Passing views between Activities

我有一个 "simple" 问题: 我如何将视图从 Activity 传递给另一个?

以我为例:

我有一个 MainActivity 和 setContentView(R.layout.activity_main); 在这个 activity_main 我已经声明了一个 Relativelayout,我想从另一个 Activity 改变它的背景颜色,那个从 .xml 文件中获取其 setContentView,您无法在该文件中找到此 RelativeLayout。我该怎么做?

感谢您的快速回答!

MainActivity.java

public class MainActivity extends AppCompatActivity{

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);

        if (savedInstanceState != null) {

            //Save the text of the editText
            bringer = savedInstanceState.getString("bringer");

            input.setText(bringer);

            //Save the Listview
            content = savedInstanceState.getStringArrayList("content");

            adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, content);

            layout = (ListView) findViewById(R.id.layout);


            layout.setAdapter(adapter);
        }
    }


    @Override
    public void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putStringArrayList("content", content);
        outState.putStringArrayList("list", list);

        bringer = input.getText().toString();
        outState.putString("bringer", bringer);
    }

第二个Activity:

public class pop extends Activity {

        back.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Thats where it fails, because it couldnt get the parent-
       view.
                finish();
            }
        });

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


            }
        });
    }

}

简短的回答是你不能在活动之间传递View

如果您想根据用户在 ActivityTwo 中的操作修改 ActivityOne 中的 View,那么您应该 ActivityOne 启动 ActivityTwo 使用 startActivityForResult().

ActivityTwo 然后可以调用 setResult() 方法,并且 ActivityOne 可以实现 onActivityResult() 来接收该信息。