Java / Android, несколько классов - PullRequest
0 голосов
/ 04 января 2012

Я новичок в Android, и у меня есть несколько классов. Мне было интересно, можно ли как-нибудь включить четыре класса в один основной класс.

Ниже приведен пример моего кода. Я с нетерпением жду помощи.

Это класс FindUs (основной класс)

package com.abc.example;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class FindUs extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.findUs);

            Button first = (Button) findViewById(R.id.first);
            Button second = (Button) findViewById(R.id.second);
            Button third = (Button) findViewById(R.id.third);
            Button fourth = (Button) findViewById(R.id.fourth);

            first.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    startActivity(new Intent("com.abc.example.FIRST"));
                }
            });

            second.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    startActivity(new Intent("ccom.abc.example.SECOND"));
                }
            });

            third.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    startActivity(new Intent("com.abc.example.THIRD"));
                }
            });

            fourth.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    // TODO Auto-generated method stub
                    startActivity(new Intent("com.abc.example.FOURTH"));
                }
            });             
}

Это второстепенные классы (имеет смысл только опубликовать один).

package com.abc.example;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class First extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.first);

    Button callFirst= (Button) findViewById(R.id.callfirst);
    Button mapFirst= (Button) findViewById(R.id.mapfirst);

    callFirst.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String phoneNumber = "tel:+18000000000";
            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse(phoneNumber));
            startActivity(callIntent);

        }
    });

    mapFirst.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            // TODO Auto-generated method stub
            String url = "grab google directions for this place";
            Intent mapIntent = new Intent(android.content.Intent.ACTION_VIEW,  Uri.parse(url));
            startActivity(mapIntent);
                }
            });             
}

Итак, вы видите, у меня будут разные номера и местоположение для каждого класса. Поэтому я не уверен, стоит ли мне просто оставить четыре отдельных класса или включить все четыре в один основной класс.

Спасибо. Будем рады узнать больше об этом от ваших ребят.

Ответы [ 3 ]

3 голосов
/ 04 января 2012

Вы должны иметь каждое действие в отдельном файле.

Если у вас есть вспомогательные классы, которые используются только в одном упражнении, вы можете использовать внутренний класс или поместить его ниже другого (не публичного). Действия должны быть отдельными файлами.

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

0 голосов
/ 04 января 2012

Конечно, вы должны хранить классы активности в отдельных файлах.

На самом деле это должно быть причиной того, что вам нужно поместить соответствующую декларацию активности в файл манифеста для всех операций отдельно.

Как сказал @Maethortje, вспомогательные классы только для этого действия могут быть ниже основного класса, в том же файле, но если вспомогательный класс используется большим количеством действий, нужно также отделить его ...

Все это облегчит задачу тому, кто просматривает ваш код позже, но и вам, когда вы решите изменить, обновить или улучшить код приложения.

0 голосов
/ 04 января 2012

Вы должны стремиться держать классы отдельно друг от друга, сводя к минимуму количество повторяющегося кода.

Если какой-либо класс, который вы пишете, начинает становиться слишком большим, вы должны разделить его на части, которые сосредоточены вокруг одной краткой идеи и создают отношения между полученными классами с помощью, например, агрегации . Если у классов есть некоторые функциональные возможности и кажется, что вы пишете дублирующий код, вам следует рассмотреть возможность выделения общих функциональных возможностей в суперкласс и извлечь оттуда затронутые классы, , если они все имеют отношение is-is к суперкласс.

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