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