我想在android中使用自制类

时间:2013-04-13 00:13:03

标签: android

我目前是Android开发人员的新手,我很难在MainActivity Android课程中尝试使用自制课程。 让我给你举个例子; 我创建了一个SquareArea类,并希望在MainActivity类中使用它

public class SquareArea{

  private double _length;
  private double _width;

  public SquareArea(double length , double width){
    _length = length;
    _width = width;
      area();   
  }

  private double area(){
    return _length
  }
}

当我在MainActivity类中实例化SquareClass时,我希望能够使用area()方法并在从(EditText)中提取的值时返回 我想使用该值将其放在文本视图中;但是这似乎不会发生。

我可以使用方法,但我想使用自己的类。

请帮助,我对此感到沮丧。

///Below is my MainActivity Class///
public class MainActivity extends Activity {

    EditText mEditText1;
    EditText mEditText2;
    EditText mEditText3;
    TextView mTextView;
    Button mButton;
    Double value1, value2;
    SquareArea sq1;

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

        mEditText1 = (EditText) findViewById(R.id.editText1);
        mEditText2 = (EditText) findViewById(R.id.editText2);
        mEditText3 = (EditText) findViewById(R.id.editText3);
        mTextView = (TextView) findViewById(R.id.textView1);

        mEditText1.setBackgroundColor(Color.GREEN);
        mEditText2.setBackgroundColor(Color.GREEN);
        mEditText3.setBackgroundColor(Color.RED);



        mButton = (Button) findViewById(R.id.button1);

        mButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //When the button is clicked, call the calucate method.
                //  calculate();
                try {
                    value1 = Double.parseDouble(mEditText1.getText().toString());
                    value2 = Double.parseDouble(mEditText2.getText().toString());
                    sq1 = new SquareArea(value1, value2);

                    mTextView.setText(sq1.toString());
                } catch (NumberFormatException e) {
                    mTextView.setText("Please use numbers");
                }
            });
        }
}

2 个答案:

答案 0 :(得分:0)

您声明area() private,所以不能称之为

public double area(){
     return _length
     }  

你只需要打电话给你的区域()

mTextView.setText(String.ValueOf(sq1.area()));

答案 1 :(得分:0)

我看到了几个问题

mTextView.setText(sq1.toString());

不会覆盖SquareArea中的toString方法。因此toString将返回有关对象的默认信息(内存中的位置,名称等)

public SquareArea(double length , double width){
    _length = length;
    _width = width;
      area();   
}

在上面的代码中,您位于构造函数中。你为什么要从这里调用area()?构造函数不能返回任何内容,而area()的结果会丢失,因为area()返回一个double。

最后:

private double area(){
  return _length
}

此方法是私有的。它不能从类/对象外部调用。

为了让您的代码正常运行,我将改变这一点。

public class SquareArea{

  private double _length;
  private double _width;

  public SquareArea(double length , double width){
    _length = length;
    _width = width;
  }

  public double area(){
    return _length * _width;
  }
}



///Below is my MainActivity Class///
public class MainActivity extends Activity {

    EditText mEditText1;
    EditText mEditText2;
    EditText mEditText3;
    TextView mTextView;
    Button mButton;
    Double value1, value2;
    SquareArea sq1;

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

        mEditText1 = (EditText) findViewById(R.id.editText1);
        mEditText2 = (EditText) findViewById(R.id.editText2);
        mEditText3 = (EditText) findViewById(R.id.editText3);
        mTextView = (TextView) findViewById(R.id.textView1);

        mEditText1.setBackgroundColor(Color.GREEN);
        mEditText2.setBackgroundColor(Color.GREEN);
        mEditText3.setBackgroundColor(Color.RED);



        mButton = (Button) findViewById(R.id.button1);

        mButton.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                //When the button is clicked, call the calucate method.
                //  calculate();
                try {
                    value1 = Double.parseDouble(mEditText1.getText().toString());
                    value2 = Double.parseDouble(mEditText2.getText().toString());
                    sq1 = new SquareArea(value1, value2);

                    mTextView.setText(String.ValueOf(sq1.area()));
                } catch (NumberFormatException e) {
                    mTextView.setText("Please use numbers");
                }
            });
        }
}