我使用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");
}
}
// FILE Class2.java
package xxx.yyy;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Class2 extends Activity {
TextView tv;
// @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void Test2 () {
setContentView(R.layout.layoutA);
TextView tv = (TextView)findViewById(R.id.DisplayLine);
tv.setText("Start");
}
}
// FILE layoutA.xml
<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
android:id="@+id/widget0"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
>
<TextView
android:id="@+id/DisplayLine"
android:layout_width="350px"
android:layout_height="40px"
android:background="#ff99ff99"
android:textStyle="bold"
android:textColor="#ff000000"
android:layout_x="10px"
android:layout_y="10px"
>
</TextView>
</AbsoluteLayout>
如果允许Test1运行,则可以。 如果允许Test2运行,请获得FORCE CLOSE。
答案 0 :(得分:1)
尝试使用startActivity实例化Class2而不是Class2 c2 = new Class2();
另外,我注意到你使用了c2和C2(区分大小写的错误)。
我希望能帮助你。
答案 1 :(得分:0)
Class2 c2 = new Class2();
C2.Test2();
检查你的c2大写?
史蒂夫
答案 2 :(得分:0)
我不明白你想用这个架构完成什么...首先,如果你只使用 Class2 来初始化 MainClass 的布局而不是你应该不要在Class2中扩展活动。
我可以建议的是:
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");
}
}
和 MainClass :
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");
}
}
如果你想做的不同于此,那么请回到你真正想要的东西。