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认为它是可接受的,并将该方法用作活动的正常设计模式,那么他们将在将来的某个时候遇到问题。