2013-04-13 6 views
0

Я в настоящее время не знаком с Android Development, и у меня есть трудное время, пытаясь использовать самодельный класс в моем классе 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 
    } 
} 

Когда я экземпляр SquareClass в классе MainActivity я хочу, чтобы иметь возможность использовать метод области() и вернуться, когда значения, которые извлекаются из (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"); 
       } 
      }); 
     } 
} 

ответ

0

Вы объявляете area() private, поэтому вы не можете назвать это

public double area(){ 
    return _length 
    } 

и вы просто должны вызвать вашу область()

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

Спасибо @Hoan, я дам это попробовать. Я ценю это. – HRo

+0

@ HoanNguyen.Спасибо. Каждая вещь работает как ожидалось. Я очень ценю вашу помощь. – HRo

0

Я вижу несколько проблем

mTextView.setText(sq1.toString()); 

ToString m Этод в SquareArea не переопределяется. Таким образом, ToString возвращает сведения по умолчанию об объекте (местоположение в памяти, имя и т.д.)

public SquareArea(double length , double width){ 
    _length = length; 
    _width = width; 
     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"); 
       } 
      }); 
     } 
} 
Смежные вопросы