将视图从一个活动传递到另一个活
我正在尝试将视图从一个活动传递到另一个活动。
在我的第一个活动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中使用