2015-06-08 5 views
-6

Есть ли способ назвать метод другого class в onClickbutton?Как использовать метод из другого класса Java Android onClick?

мне нужно позвонить myClass.myMethod() в onClick, но говорят, что его нет в главном

моей кнопки OnClick android:onClick="textToVoice.listenVoice"

Мой класс, то не закончил:

public class TextToVoice extends MainActivity{ 
public void listenVoice(){ 
    this.makeVoice(); 

} 
public void downloadVoice(){ 


} 
private void makeVoice(){ 
    Toast toast = Toast.makeText(getApplicationContext(), this.makeUrl(), 
      Toast.LENGTH_SHORT); 
    toast.show(); 
} 
private String makeUrl(){ 
    Editable phstr = super.textVoice.getText(); 
    String textUrl = phstr.toString(); 
    if (textUrl.contains(" ")){ 
     textUrl = textUrl.replace(" ", "+"); 
    } 
    return textUrl; 
} 
} 

и главное:

public class MainActivity extends ActionBarActivity { 
protected EditText textVoice; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    getSupportActionBar().hide(); 
    setContentView(R.layout.activity_main); 
    this.textVoice = 
      (EditText) findViewById(R.id.textVoice); 
    TextToVoice textToVoice = new TextToVoice(); 
} 
...... 

ответ

1
class MainActivity extends Activity { 
protected EditText textVoice; 
Button button; 
TextToVoice textToVoice; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.ln_dialog); 
    textVoice = (EditText) findViewById(R.id.textVoice); 
    button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      textToVoice = new TextToVoice(MainActivity.this,textVoice.getText().toString()); 
      textToVoice.listenVoice(); 
     } 
    }); 

} 


public class TextToVoice extends MainActivity { 
    String textString; 
    Context context; 

    public TextToVoice(Context c ,String s) { 
     textString = s; 
     context = c; 
    } 

    public void listenVoice() { 
     makeVoice(); 
    } 

    public void downloadVoice() { 
    } 

    public void makeVoice() { 
     Toast.makeText(context, makeUrl(), Toast.LENGTH_SHORT).show(); 
    } 

    private String makeUrl() { 

     if (textString.contains(" ")) { 
      textString = textString.replace(" ", "+"); 
     } 
     return textString; 
    } 
} 
+0

Извините, я не сообщаю много деталей, но вот он –

+0

, так что он работает или нет для вас? –

+0

Нет. Я отредактировал сообщение с дополнительной информацией –

0

Объявите метод в другом классе, как общественный и статический, а затем вы можете использовать его как YourClass.method()

+0

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

0

Почему ваш класс TextToVoice продлить MainActivity. Кнопки Android требуют реализации интерфейса View.OnClickListener. Попробуйте реализовать вышеупомянутый интерфейс, а не расширять MainActivity. Передайте контекст класса конструктору и работайте в указанном методе. Посмотрите, работает ли это.

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