将视图从一个活动传递到另一个活

我正在尝试将视图从一个活动传递到另一个活动。

在我的第一个活动onButtonClick ,我使用Intent导航到另一个活动。

我写了这行setContentView(R.layout.main); 在第1个活动中,还声明了一个graphView

现在的问题是,我想在第二个活动中填充graphView但是它的引用即mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); 在第1次活动中出现。

那么我怎样才能在第二次活动中mySimpleXYPlot

如果我使用

  setContentView(R.layout.main); mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); 

在第二个活动中,整个布局重新启动,我不想发生:(

任何帮助都将得到满足!

只需在第二个内容视图中添加相同的xml即可。 如果必须在多个视图中使用布局的特定部分,请将其放在单独的xml中并包含它。

如果你想使用与public声明为static的同一个实例,那么你也可以在另一个类或活动中使用它

编辑…

在活动1中,这样做

 public class MyActivity1 extends Activity{ public static XYPlot mySimpleXYPlot; public onCreated(Bundle b){ setContentView(R.layout.main); mySimpleXYPlot = (XYPlot) findViewById(R.id.mySimpleXYPlot); // start you 2nd activity from button } } 

在Activity2中使用这种方式

 public class MyActivity2 extends Activity{ private XYPlot mySimpleXYPlot; public onCreated(Bundle b){ setContentView(R.layout.main); mySimpleXYPlot = MyActivity2.mySimpleXYPlot; // use mySimpleXYPlot as per your requirement } } 

我不确定这项工作是否完美,但请尝试这种方式,并说明发生了什么

EDIT2

不要将组件添加到xml布局文件中添加oncreate time

我的布局文件看起来像这样

     

我的第一个活动

  public static EditText edittext; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); //edittext = (EditText) findViewById(R.id.edittext); final LinearLayout ll = (LinearLayout) findViewById(R.id.main_linear); edittext = new EditText(getApplicationContext()); edittext.setId(1); edittext.setText("text change"); ((Button)findViewById(R.id.btn1)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { edittext.setText(edittext.getText().toString()); ll.removeView(edittext); startActivity(new Intent(TestLinear.this,TestClass.class)); } }); ll.addView(edittext); } 

您需要首先从已添加为子项的布局中删除该组件

  private static EditText edittext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); LinearLayout ll = (LinearLayout) findViewById(R.id.main_linear); getEdit(); ((Button)findViewById(R.id.btn1)).setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Log.v("test", edittext.getText().toString()); } }); ll.addView(edittext); } static void getEdit(){ edittext = TestLinear.edittext; } 

我知道这不是完美的方式。 另一种方法是你可以将它的值存储在自定义类中,比如setter / getter并在activity中使用