findviewbyid另一个活动不同于Android中的ContentView
这是主要的活动findviewbyid另一个活动不同于Android中的ContentView,android,Android,这是主要的活动 //class declare public class MainActivity extends Activity { // a lot of code } //OnCreate Set setContentView(R.layout.activity_main); 在具有ID为R.ID.widget101的TableLayout的内部,TableLayout具有动态创建的LinearLayout 下面是第二个活动代码,尝试获取MainActivity Ta
//class declare
public class MainActivity extends Activity {
// a lot of code
}
//OnCreate Set
setContentView(R.layout.activity_main);
在具有ID为R.ID.widget101
的TableLayout的内部,TableLayout具有动态创建的LinearLayout
下面是第二个活动代码,尝试获取MainActivity TableLayout并获取所有内部LinearLayout子级
//class declare
public class SecondActivity extends Activity {
// a lot of code
}
//OnCreate Set
setContentView(R.layout.second);
public void EnableButton(boolean bool){
View view = LayoutInflater.from(getApplication()).inflate(R.layout.activity_main, null);
ViewGroup layout = (ViewGroup) view.findViewById(R.id.widget101);
if (layout != null){
Log.d(null,"EnableButton getchild="+layout.getChildCount()+"");
Log.d(null,"EnableButton Function");
}
}
当调用MainActivity以获取TableLayout子级的第二个活动返回0时,出现问题
===============================================================
这就是我所说的第二个活动
public class MainActivity extends Activity
implements OnClickListener {
//overrides the OnClickListener interface method
@Override
public void onClick(View arg0) {
if(arg0.getId() == R.id.btnWEmas){
//define a new Intent for the second Activity
Intent intent = new Intent(this,SecondActivity.class);
intent.putExtra("From_LocationName",global.From_LocationName);
intent.putExtra("To_LocationName",global.To_LocationName);
TextView textview = (TextView) findViewById(R.id.lblPrice);
intent.putExtra("Price",textview.getText());
//start the second Activity
this.startActivity(intent);
}
// still have a lot of code
把这个放在你的第一个活动中
static ViewGroup layout ; //define it globally
layout = (ViewGroup) view.findViewById(R.id.widget101); //put it inside the oncreate of main activity
并将此对象用于第二个活动
public void EnableButton(boolean bool){
View view = LayoutInflater.from(getApplication()).inflate(R.layout.activity_main, null);
if (MainActivity.layout != null){
Log.d(null,"EnableButton getchild="+MainActivity.layout.getChildCount()+"");
Log.d(null,"EnableButton Function");
}
}
您应该遵循以下场景: 创建自定义类文件,其中包含表布局及其子元素。使用上下文参数创建默认构造函数。请按照下面的链接更清楚 在这里,我创建了一个定制的Toast,您可以根据它定制您的表布局
还有一件事,请尽量忽略静态变量的使用。它会导致内存泄漏,并导致应用程序崩溃。是否使用finish()销毁MainActivity;代码,当您调用第二个活动时?@SercanOzdemir code updated为什么不使用@SercanOzdemir是的,我正在使用Bundle ExtrasTry以字符串或数组的形式发送您的全部信息,然后在第二个活动中获取它们,如上面我的链接所示。(getStringExtra)。即使是肮脏的方式,您也可以将整个信息放在一个带有拆分字符的字符串中,如(#),然后在第二个活动中,您可以获取整个字符串并将其拆分为您的信息。静态视图组是一个坏主意,可能会导致内存泄漏。@ShashankAgarwal:这是一个非常糟糕的做法。永远不要建议在活动中使用静态字段或方法是一件好事。如果OP认为它是可接受的,并将该方法用作活动的正常设计模式,那么他们将在将来的某个时候遇到问题。