Java 创建对象并运行方法

Java 创建对象并运行方法,java,android,class,Java,Android,Class,创建对象并运行方法: 它编译得很好,但应用程序在启动时立即崩溃:( 我实现了接口和所有。。 发生什么事了 public Button b = (Button)findViewById(R.id.button0); MainActivity.java public class MainActivity extends AppCompatActivity { public interface MyInterfcae { void test0(Context cont

创建对象并运行方法: 它编译得很好,但应用程序在启动时立即崩溃:( 我实现了接口和所有。。 发生什么事了

public Button b = (Button)findViewById(R.id.button0);
MainActivity.java

public class MainActivity extends AppCompatActivity
{
    public interface MyInterfcae
    {
        void test0(Context context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Test t = new Test();
        t.test0(this);
    }
}


Test.java

public class Test extends MainActivity implements MainActivity.MyInterfcae
{
    Context context;

    @Override
    public void test0(final Context context)
    {
        this.context = context;

        Button b = (Button) ((Activity)context).findViewById(R.id.button0);

        b.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View arg0) {

                Toast toast = Toast.makeText(context, "Implemented!", Toast.LENGTH_SHORT);
                toast.show();

            }
        });


    }
}


它编译得很好,但应用程序在启动时立即崩溃:( 我实现了接口和所有。。 发生什么事了

public Button b = (Button)findViewById(R.id.button0);
此链接出现错误。您尚未扩展与此活动相关的布局文件,正在尝试访问button0。因此,为了解决此错误,请在方法中传递布局文件实例,然后使用该实例执行findViewById()

请这样做:-

MainActivity.java

public class MainActivity extends AppCompatActivity
{
    public interface MyInterfcae
    {
        void test0(Context context);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Test t = new Test();
        t.test0(this);
    }
}
Test.java

public class Test extends MainActivity implements MainActivity.MyInterfcae
{
    Context context;

    @Override
    public void test0(final Context context)
    {
        this.context = context;

        Button b = (Button) ((Activity)context).findViewById(R.id.button0);

        b.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View arg0) {

                Toast toast = Toast.makeText(context, "Implemented!", Toast.LENGTH_SHORT);
                toast.show();

            }
        });


    }
}

公共类测试扩展了MainActivity
测试t=new Test();
有什么问题?“测试t=new Test();”对象不是这样创建的吗?当然不是Android框架的活动!@EpicPandaForce,它对测试有效,但没有在多个活动上实现它。调试:“java.lang.RuntimeException:无法启动activity ComponentInfo”:(您能帮我一下吗?下面有一大堆行指定崩溃发生的确切位置感谢您的帮助我尝试传递“public Button b=(Button)findViewById(R.id.button0)”;“在方法内部,它仍然崩溃。你不能传递它。你必须传递上下文。我已经更新了答案。请看@xmarcioras