2012-01-03 5 views
-2

ПОЖАЛУЙСТА, отрицайте меня ... потому что я отношусь к этому серьезно.):Разработчик Android: Слишком много классов

Я делаю это слишком сложным для себя?

Хорошо, так это то, что происходит с моим приложением. У меня есть один основной класс, давайте просто скажем цвета. внутри этого класса цвета, у меня есть пять различных классов, относящихся к нему. Поэтому у меня есть фиолетовый, синий, розовый, желтый и зеленый. Есть ли способ, которым я могу просто включить эти классы в цвета? Я просто хочу сделать его проще и опрятно. Если бы у меня мог быть только один класс вместо классов SIX, это было бы довольно круто. То, что делает класс цветов, открывает фиолетовое сочетание цветов, связь с розовыми цветами и так далее. Так что это действительно не так много. Мне просто нужно какое-то направление. Я новичок в этом!

, пожалуйста, помогите! Cady

Цвета класс [основной класс] Это один из основных классов, которые я использую. это включено в основной класс (main.java), это часть выбора из меню с помощью Activity.

package com.tester.test; 

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 Colors extends Activity { 

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

    //below are the buttons for the different links (: 
    Button pink = (Button) findViewById(R.id.pink); 
    Button purple = (Button) findViewById(R.id.purple); 
    Button green = (Button) findViewById(R.id.green); 
    Button yellow = (Button) findViewById(R.id.yellow); 

    pink.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(new Intent("com.tester.test.PINK")); 
     } 
    }); 

    purple.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(new Intent("com.tester.test.PURPLE")); 
     } 
    }); 

    green.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(new Intent("com.tester.test.GREEN")); 
     } 
    }); 

    yellow.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      startActivity(new Intent("com.tester.test.YELLOW")); 
     } 
    });    
} 

@Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    } 

public boolean onCreateOptionsMenu(Menu menu){ 
super.onCreateOptionsMenu(menu); 
MenuInflater stuffi = getMenuInflater(); 
stuffi.inflate(R.menu.main_menu, menu); 
return true; 
} 

public boolean onOptionsItemSelected(MenuItem item){ 
    switch (item.getItemId()){ 
    case R.id.menuAbout: 
     startActivity(new Intent("com.tester.test.ABOUT")); 
     return true; 
    } 
    return false; 
    } 
} 

ДРУГИЕ КЛАССЫ розовый/фиолетовый/зеленый/желтый Это другие классы. Я просто отправлю сообщение, потому что все они похожи. Все они имеют один и тот же onCreate Bundle. Единственное отличие в этом - это ссылка. У меня есть четыре разных внешних ссылки, которые запускаются в розовом, фиолетовом, зеленом, желтом цвете.

package com.tester.test; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

public class Pink extends Activity{ 

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

    WebView ourStuff = (WebView) findViewById(R.id.webView); 
    ourStuff.getSettings().setLoadWithOverviewMode(true); 
    ourStuff.getSettings().setUseWideViewPort(true); 
    ourStuff.getSettings().setBuiltInZoomControls(true); 

    try{ 
     ourStuff.loadUrl("http://www.google.com/"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 
} 

ПОЖАЛУЙСТА, помогите мне! Я хочу один файл класса для цветов .... не ПЯТЬ!

Благодаря Кэди

+1

Я перестал читать это после первого вопроса. Пожалуйста, приложите еще несколько усилий к описательному названию и содержанию вашего вопроса. –

+1

Небольшой образец вашего класса должен быть обязательным. То, что вы просите, - это простое наследование или общее программирование. Без кода мы не можем помочь. То вероятно почему другие проголосовали вниз/для близко. – WarrenFaith

+0

Я думаю, может быть, у вашего кода был ужасный случай, мои соболезнования. Вы уверены, что вам не нужен переключатель: case? Или имеете базовый класс и остальные классы, которые простираются от базового класса? – MikeIsrael

ответ

1

Теперь вопрос более понятно ... использовать намерение передать URIs

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.links); 

    View.OnClickListener oneOnClickListenerToRuleThemAll = new View.OnClickListener() { 
    public void onClick(View v) { 
     startActivity(new Intent(
       Intent.ACTION_VIEW, //doesn't matter in this sample 
       (Uri)v.getTag(), //v should be button and getTag should return uri ... we will use this for magic :) (doc Intent.getData() and Intent this constructor) 
       ActivityName.this, //just context (heh edit: 'this' means oneOnClickListenerToRuleThemAll here but we have to put Activity) 
       com.tester.test.TesterActivity.class 
     )); 
    } 
    }; //edit: delete unnecessary ")" 
    Button button = (Button) findViewById(R.id.pink); 
    button.setTag(Uri.parse("http://pink.uri.com")); 
    button.setOnClickListener(oneOnClickListenerToRuleThemAll); 

    button = (Button) findViewById(R.id.purple); 
    // EDIT: replace button.Tag = Uri... hehehe my bad i was thinking csharpish 
    button.setTag(Uri.parse("http://purple.uri.com")); 
    button.setOnClickListener(oneOnClickListenerToRuleThemAll); 

    button = (Button) findViewById(R.id.green); 
    button.setTag(Uri.parse("http://green.uri.com")); 
    button.setOnClickListener(oneOnClickListenerToRuleThemAll); 

    button = (Button) findViewById(R.id.yellow); 
    button.setTag(Uri.parse("http://yellow.uri.com")); 
    button.setOnClickListener(oneOnClickListenerToRuleThemAll); 

} 

новый розовый класс (назовем его TesterActivity)

package com.tester.test; 

import android.app.Activity; 
import android.os.Bundle; 
import android.webkit.WebView; 

//now we call it TesterActivity 
public class TesterActivity extends Activity{ 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView (R.layout.webview); 

    WebView ourStuff = (WebView) findViewById(R.id.webView); 
    ourStuff.getSettings().setLoadWithOverviewMode(true); 
    ourStuff.getSettings().setUseWideViewPort(true); 
    ourStuff.getSettings().setBuiltInZoomControls(true); 

    try{ 
     ourStuff.loadUrl(getIntent().getData().toString()); //magic !!!!! 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 
} 
+0

OMG! Спасибо! : D У меня есть одна незначительная проблема. Хорошо, кажется, что, когда я заменяю uri и нажимаю кнопку ..., это дает мне следующую ошибку (для всех четырех ссылок): «Извините! Приложение com.tester.test (process com. tester.test) неожиданно остановился. Повторите попытку. -Force close « Теперь, должна ли ссылка включать? даже в моем внешнем веб-адресе. Пожалуйста, помогите. спасибо. – Cady

+0

он должен быть вашим uris ... как 'http: // google.com' или так ...вы добавили TesterActivity в AndroidManifest.xml? – Selvin

+0

Знаешь что ... Я этого не делал! Обычно я обычно меняю манифест. о чем я только думал! большое спасибо! вы действительно действительно сырой. (: теперь я могу удалить все четыре класса. whew. – Cady

Смежные вопросы