Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java I';我没有在另一个类中获取EditText值_Java_Android_Android Layout - Fatal编程技术网

Java I';我没有在另一个类中获取EditText值

Java I';我没有在另一个类中获取EditText值,java,android,android-layout,Java,Android,Android Layout,MainActivity.java(头等舱) activity\u main.xml(第一个布局文件) EditText值存储在变量bang-123456中的MainActivity.java中。我在声明它们时添加了公共修饰符,这样我也可以在第二个类中访问它们。在第二个类中,我想使用这些变量值设置到TextView中,但在运行时,它并没有显示值 在我的模拟器中运行后,我还附上了这两种布局的屏幕截图 在第二个布局中,它应该显示名称和其他值。我建议您后退几步,更好地了解Android的基本原

MainActivity.java(头等舱)

activity\u main.xml(第一个布局文件)

EditText值存储在变量bang-123456中的MainActivity.java中。我在声明它们时添加了公共修饰符,这样我也可以在第二个类中访问它们。在第二个类中,我想使用这些变量值设置到TextView中,但在运行时,它并没有显示值

在我的模拟器中运行后,我还附上了这两种布局的屏幕截图


在第二个布局中,它应该显示名称和其他值。

我建议您后退几步,更好地了解Android的基本原理,包括一般活动。也许一个好的开始,应该是理解

对你的问题的回答并不简单,因为Android的工作方式可能与你的理解非常不同

简而言之,第二个活动与第一个活动是完全不同的类实例。从第一个扩展第二个并不意味着第二个可以使用指定的变量,它仅仅意味着类以方法和字段的形式继承其父类的结构

相反,您应该以这样一种方式来设计您的活动,即它们传递这些字符串。启动第二个活动时,请在启动时将这些字符串包含在意图中

例如:

public类MainActivity扩展了AppCompatActivity{
// ...
/**启动第二个活动的方法*/
public void onButtonClicked(){
意向意向=新意向(此,SecondActivity.class);
intent.putString(SecondActivity.EXTRA_BANG1,BANG1);
// ...
星触觉(意向);
}
}
公共类SecondActivity扩展了AppCompatActivity{
公共静态最终字符串额外_BANG1=“BANG1”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
// ...
TextView tvOne=(TextView)findViewById(R.id.one);
// ...
String bang1=getIntent().getString(额外的bang1);
tvOne.setText(bang1);
}
}

我完全建议阅读Android文档(写得很好!),以便更好地理解它是如何(以及为什么)通过这种机制工作的。特别是,与您非常相关。

如果您想在其他活动中使用这些值,只需将这些值与用于启动新活动的意图一起传递即可

MainActivity.java

Intent i = new Intent(MainActivity.this,SecondActivity.class);
i.putExtra("Bang1",bang1);
i.putExtra("Bang2",bang2);
i.putExtra("Bang3",bang3);
...
您可以在SecondActivity.java文件中获取它们,如下所示:

Intent i =getIntent();
int bang1 = i.getIntExtra("Bang1");
...
但是,为了避免任何类型的错误,我建议创建一个新的类来将字符串名称存储为最终字符串常量

或者,您可以直接将这些变量声明为静态变量,并在SecondActivity中通过引用它们的名称来访问它们:

 int bang1 = MainActivity.bang1;

如果将变量设置为静态,则可以访问其他活动中的变量。例如,替换
公共字符串bang1、bang2、bang3、bang4、bang5、bang6带有
公共静态字符串bang1、bang2、bang3、bang4、bang5、bang6。然后在您的其他活动中,您可以将其称为
MainActivity.bang1
MainActivity.bang2
MainActivity.bang3
等等。试一试吧。@Lal:这是一个非常糟糕的主意,原因有很多。当存在多个MainActivity实例时(考虑从通知启动新任务),它将中断,而从保存的实例状态恢复应用程序时,它将不起作用。更糟糕的是,你持有一个对某个活动的静态引用,从而导致内存泄漏。老实说,我认为在你尝试这样做之前,你需要对Android的基本原理做更多的研究,因为你的问题表明你真的不了解活动是如何工作的。这里有很多错误。看看Android文档,或者看看一些教程。
Intent i = new Intent(MainActivity.this,SecondActivity.class);
i.putExtra("Bang1",bang1);
i.putExtra("Bang2",bang2);
i.putExtra("Bang3",bang3);
...
Intent i =getIntent();
int bang1 = i.getIntExtra("Bang1");
...
 int bang1 = MainActivity.bang1;