Основная проблема, которую я не могу решить - PullRequest
0 голосов
/ 25 марта 2011

Я использовал 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.

Ответы [ 3 ]

1 голос
/ 25 марта 2011

Попробуйте создать экземпляр Class2, используя вместо этого startActivity Class2 c2 = новый Class2 ();

Также я заметил, что вы используете c2 и C2 (ошибка с учетом регистра).

Надеюсь, это поможет вам.

0 голосов
/ 25 марта 2011

Я не понял, что вы пытаетесь выполнить с помощью этой архитектуры ... Прежде всего, если вы используете Class2 только для инициализации макета MainClass , чем вы не должны расширять Деятельность в классе 2.

Что я могу предложить, это:

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");
    }
}

Если вы пытаетесь сделать что-то иное, чем это, то, пожалуйста, вернитесь с тем, что вы действительно хотите.

0 голосов
/ 25 марта 2011
Class2 c2 = new Class2();
C2.Test2();

Проверьте вашу заглавную букву c2?

Steve

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...