Android 我无法解决的基本问题

Android 我无法解决的基本问题,android,android-emulator,Android,Android Emulator,我正在使用Eclipse和Android模拟器。谁能告诉我这里怎么了 // FILE MainClass.java package xxx.yyy; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; public class MainClass extends Activity { @Override

我正在使用Eclipse和Android模拟器。谁能告诉我这里怎么了

//  FILE MainClass.java
    package xxx.yyy;
    import android.app.Activity;
    import android.os.Bundle;
    import android.widget.TextView;

    public class MainClass extends Activity {

        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.layoutA);
    // If this line is enabled, it works fine
            Test1();
    //  but if these lines are enabled, you get FORCE CLOSE
        Class2 c2 = new Class2();
        C2.Test2();
    }

    public void Test1() {
    setContentView(R.layout.layoutA);
          TextView tv = (TextView)findViewById(R.id.DisplayLine);
    tv.setText("Start");
    }
    }


//文件layoutA.xml
如果允许Test1运行,那么就可以了。 如果允许运行Test2,请强制关闭

Class2 c2 = new Class2();
C2.Test2();
检查c2的大写字母


Steve

尝试使用startActivity而不是Class2 c2=new Class2()实例化Class2

另外,我注意到您使用c2和c2(区分大小写的错误)


我希望这能对您有所帮助。

我不明白您使用此体系结构想要实现什么。。。首先,如果您仅使用Class2初始化MainClass的布局,则不应在Class2中扩展Activity

我的建议是:

package com.s;

import android.app.Activity;
import android.widget.TextView;

public class Class2 {
    TextView tv;
    Activity activity;

    public Class2(Activity activity) {
        this.activity = activity;
    }

    public void Test2() {
        activity.setContentView(R.layout.layoutA);
        TextView tv = (TextView) activity.findViewById(R.id.DisplayLine);
        tv.setText("Start");
    }
}
对于main类

package com.s;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainClass extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // If this line is enabled, it works fine
        Test1();
        // but if these lines are enabled, you get FORCE CLOSE
        Class2 c2 = new Class2(this);
        c2.Test2();
    }

    public void Test1() {
        setContentView(R.layout.layoutA);
        TextView tv = (TextView) findViewById(R.id.DisplayLine);
        tv.setText("Start");
    }
}

如果您正在尝试执行与此不同的操作,请返回您真正想要的操作。

我认为您不能像Java中那样使用对象初始化来启动新的活动。不管是哪种方式,都会按照@ASMaitre的建议进行。打开你的logcat,按下带有E字母的圆圈。然后找出哪一行会给你的代码带来错误正如Theresia所说,你对Android缺乏了解。在手机上开发很难,通过Android学习Java更难。我建议先学习Java,然后转向Android。他正试图在Class2的帮助下设置Mainclass的布局。。所以不需要星际触觉。。对于区分大小写的事情:他正在使用eclipse和eclipse,只要他键入“C2”,就立即画一条红色下划线或错误标记。感谢您的快速响应。我使用了StartTactivity,效果很好。
package com.s;

import android.app.Activity;
import android.widget.TextView;

public class Class2 {
    TextView tv;
    Activity activity;

    public Class2(Activity activity) {
        this.activity = activity;
    }

    public void Test2() {
        activity.setContentView(R.layout.layoutA);
        TextView tv = (TextView) activity.findViewById(R.id.DisplayLine);
        tv.setText("Start");
    }
}
package com.s;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class MainClass extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // If this line is enabled, it works fine
        Test1();
        // but if these lines are enabled, you get FORCE CLOSE
        Class2 c2 = new Class2(this);
        c2.Test2();
    }

    public void Test1() {
        setContentView(R.layout.layoutA);
        TextView tv = (TextView) findViewById(R.id.DisplayLine);
        tv.setText("Start");
    }
}