在不同的类中访问我的方法

时间:2012-06-27 07:55:03

标签: android

我创建了一个类

public class FormActivity extends Activity 
{
    TextView tv =new TextView(this);
    GridLayout gl=new GridLayout(this);

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        paint();
    }

    public void paint()
    {
        tv.setText("In new File");
        gl=(GridLayout) findViewById(R.id.gl);
        gl.addView(tv);
    }
}

我希望从另一个类(同一个包中的java文件)访问paint()方法。 我试过这个:

public class FileSystemDemoActivity extends Activity 
{

    FormActivity f1=new FormActivity();
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        f1.paint();
    }
}

但这不起作用。不幸的是,模拟器停止了错误。请帮帮我。

2 个答案:

答案 0 :(得分:0)

您得到的错误可能是因为gl为空。您无法访问活动视图,因为它尚未正确初始化。要从另一个活动开始并显示FormActivity,请使用startActivity(),并调用其onCreate并最终调用您的'paint'方法。

答案 1 :(得分:0)

sorry.i have not understood can you give an example? 

您不应该尝试以

的形式访问其他活动功能

1-您不应尝试在活动中创建其他活动的实例。

2- findViewById(R.id.gl)与当前活动布局链接,它将在写入活动代码的特定活动中搜索id。

...

 public class FileSystemDemoActivity extends Activity 
        {
        FormActivity f1=new FormActivity();
        public void onCreate(Bundle savedInstanceState) 
        {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            f1.paint();
        }

            public void paint()
            {
                 tv.setText("In new File");
                 gl=(GridLayout) findViewById(R.id.gl);
                 gl.addView(tv);
            }

        }