gpt4 book ai didi

java - 将 View 从一项 Activity 传递到另一项 Activity

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:55 25 4
gpt4 key购买 nike

我正在尝试将 View 从一个 Activity 传递到另一个 Activity 。

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

我在第一个 Activity 中写了这一行 setContentView(R.layout.main); 并且还声明了一个 graphView

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

那么如何在第二个 Activity 中访问 mySimpleXYPlot

如果我用

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

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

我们将不胜感激!

最佳答案

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

编辑...

在第一个 Activity 中这样做

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
}
}

我不确定这个工作是否完美,但尝试这种方式并说出这会发生什么

编辑2

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

我的布局文件是这样的

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:id="@+id/main_linear"
>
<Button android:id="@+id/btn1" android:text="Click" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

我的第一个 Activity

    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 中使用

关于java - 将 View 从一项 Activity 传递到另一项 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8573820/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com