2012-06-22 15 views
6

Używam Eclipse do programowania Android i już skonfigurowałem mój styl formatowania kodu, ale wciąż mam anonimowe metody, których nie mogłem wymyślić jak sformatować w Eclipse . Oto, jak Eclipse formatuje teraz anonimowe metody:Jak ustawić Code Formatter dla Java Anonymous Methods in Eclipse

// The BroadcastReceiver that listens for discovered devices and 
    // changes the title when discovery is finished 
    private final BroadcastReceiver mReceiver = new BroadcastReceiver() { 
                @Override 
                public void onReceive(Context context, Intent intent) { 
                 String action = intent.getAction(); 
                 Utils.Log.i("BLUETOOTH: " + action); 
                 if (BluetoothDevice.ACTION_FOUND.equals(action)) { 
                  // Get the 
                  // BluetoothDevice 
                  // object from the 
                  // Intent 
                  BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
                  // If it's already 
                  // paired, skip it, 
                  // because it's been 
                  // listed already 
                  if (device.getBondState() != BluetoothDevice.BOND_BONDED) { 
                   if (mNewDevicesArrayAdapter.getCount() == 0) { 
                    mNewDevicesArrayAdapter.add(device); 
                   } 
                   btDevicesUpdateList.add(device); 
                  } 
                 } 
                 else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) { 
                  mNewDevicesArrayAdapter.setItems(btDevicesUpdateList); 
                  mNewDevicesArrayAdapter.notifyDataSetChanged(); 
                  btDevicesUpdateList.clear(); 
                  mBtAdapter.startDiscovery(); 
                 } 
                 else if (BluetoothAdapter.ACTION_STATE_CHANGED.equals(action)) { 
                  if (mBtAdapter.getState() == BluetoothAdapter.STATE_ON) { 
                   switchToView(viewBluetoothOn); 
                   firstTimeDiscover(); 
                  } 
                  else if (mBtAdapter.getState() == BluetoothAdapter.STATE_OFF) { 
                   switchToView(viewBluetoothOff); 
                  } 
                 } 
                } 
               }; 

Zobacz? To bardzo bzdura. Jakie jest prawidłowe ustawienie formatu anonimowej deklaracji metody, aby pozostać po lewej stronie i nie należy pod takim samym znakiem?

+0

proszę zamieszczać treści swoich .settings/org.eclipse.jdt.core.prefs –

+3

spędziłem dobre pięć minut sprzątanie że strasznym formatowania, tylko uświadomić sobie pytanie brzmi * o * powiedział straszny formatowanie. **** headdesk **** –

+0

@EugeneKuleshov to ustawienie specyficzne dla projektu. – papaiatis

Odpowiedz

0

Wygląda na to, że masz jakieś niestandardowe ustawienia formatyzatora. Przejdź do właściwości projektu/Styl kodu Java/Formatter/Włącz ustawienia specyficzne dla projektu, a następnie wybierz wbudowany profil formatyzatora "Konwencje Java".

+0

Tak, mam. Jak już wspomniałem w moim pytaniu, już ustawiłem jakieś niestandardowe ustawienie formatowania, ale nie wiem, co zrobić z formatowaniem metod Anonymusa ... – papaiatis

3

Uważam, że ustawienie, które powoduje to złe formatowanie, to "Wyrównaj pola w kolumnach", jeśli to wyłączysz, implementacja klasy/interfejsu powinna być wcięta od początku linii zamiast równych.

Otworzyłem błąd w Eclipse, aby naprawić domyślne zachowanie lub dodać inne ustawienie implementacji klasy/interfejsu.

https://bugs.eclipse.org/bugs/show_bug.cgi?id=385901

2

praca-a-round dla tego problemu jest nieco zmienić swój styl kodowania. Wytnij i wklej następujące elementy i uruchom formater. Styl # 2 będzie wyglądał na mniej ponury.

// **Style #1** - Formatter handles poorly 
JDialog jDialog1 = new JDialog(new JFrame()) { 
    public void setBackground(final Color c) { 
     super.setBackground(c); 
    } 
}; 

// **Style #2** - Formatter handles well. 
JDialog jDialog2; 
{ 
    jDialog2 = new JDialog(new JFrame()) { 
     public void setBackground(final Color c) { 
      super.setBackground(c); 
     } 
    }; 
} 
+1

Działa! Eclipse powinien naprawić formatowanie jako sugerowane @RedLenses, ale na razie jest to dobra poprawka. –