在活动之间传递视图
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()
来接收该信息。
我有一个 "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()
来接收该信息。