【发布时间】:2020-10-07 05:59:40
【问题描述】:
我是 Android 新手。 我正在尝试从一个单独的类而不是 MainActivity 引用按 Id 的视图。
注意:我的应用只有一个 Activity。
主要活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState)//Activity Oncreate callback
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) //Oncreate Options_menu callback
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.option1:
//Here am calling a method from another class
SecondClass secondClassObject=new SecondClass();
secondClassObject.method1();
}
return true;
}
二等:
public class SecondClass {
public void method1(){
TextView tv1 = (TextView)findViewById(R.id.textView);
tv1.setText("");
}
}
SecondClass中如何通过ID引用textView?如何在此 SecondClass 中将上下文设置为 MainActivity?
【问题讨论】:
-
第二个类不仅仅是另一个java类。它扩展了 AppCompatActivity,你不应该自己初始化对象,android 系统会为你做。您应该使用一个按钮来打开另一个活动。
TextView tv1 = (TextView)findViewById(R.id.textView)这会引发错误,因为尚未创建布局且视图不存在。 -
好的,现在我更新了问题及其解释。你能建议我怎么做吗?
-
将 (Context)MainActivity 作为参数传递给构造函数或方法。
-
@PeterMmm 你能把它作为答案吗?
-
在外部对象尤其是全局对象中保存活动时要小心。这将导致内存泄漏。
标签: java android android-activity android-context