gpt4 book ai didi

android - 如何从另一个 Activity 调用一个 Activity 的功能

转载 作者:太空狗 更新时间:2023-10-29 16:09:26 24 4
gpt4 key购买 nike

实际上我想从另一个 Activity 调用一个 Activity 的函数..我为此编写了一个简单的代码但它不起作用..并显示运行时错误..请检查代码...如果有任何错误..

activity1 的代码:

public class Activity1 extends Activity2  
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

call();
}
public void call()
{
showToast("Helloo");
}
}

activity2 的代码:

public class Activity2 extends Activity 
{

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void showToast(String s)
{
EditText t=(EditText)findViewById(R.id.editText1);
t.setText(s);
}
}

最佳答案

您的问题是您在不存在的 View 上调用 findViewById

Activity1 正在扩展 Activity2

你调用 Activity1 中的 super.onCreate 调用 Activity2 中的 onCreate 调用 R.layout.main 的 setContentView()

我猜你的文本 R.id.editText1 在主布局中。

Activity1 从调用 super.onCreate 返回时,它立即将内容布局重置为 main2

您尝试编辑的编辑文本框已不存在。 findViewById 找不到它,因为布局未激活。因此它崩溃了。

要修复它试试这个:

public class Activity1 extends Activity2  
{
private EditText et;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);

et = (EditText) findViewById(R.id.editText2);
call();
}
public void call()
{
showToast("Helloo", et);
}
}

其中 R.id.editText2 是布局 main2 中的编辑文本框。

在 Activity 2 中:

public class Activity2 extends Activity 
{

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void showToast(String s, EditText t)
{
t.setText(s);
}
}

关于android - 如何从另一个 Activity 调用一个 Activity 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6624192/

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