2016-01-15 9 views
0

Когда я запускаю только файл java, он производит звук. Теперь я хочу на кнопку щелкнуть, чтобы вызвать java-файл и произвести звук в eclipse.Как вызвать класс Java на кнопку, чтобы играть Jfugue

Вот мой Java код:

import org.jfugue.player.Player; 

public class HelloWorld { 
    public static void main(String[] args) { 
    Player player = new Player(); 
    player.play("C D E F G A B"); 
}  
} 

И мой MainActivity.java в затмении:

public class MainActivity extends ActionBarActivity implements View.OnClickListener { 

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

    Button button1 = (Button)findViewById(R.id.button1); 
    button1.setOnClickListener((OnClickListener) this); 
} 

@Override 
public void onClick(View arg0) { 
    // CODE HERE???  
} 
} 
+0

вы не вызываете файл (к тому же на его имя :), но вы можете вызвать функцию в классе, который определенных в файле. Если вы опубликуете «файл», мы также сможем помочь с кодом в onClick – Gavriel

+0

thank u Gavriel Я разместил код :) – John

+0

, хотя ответы других объясняют, как вы можете называть свой Java-код с onClick, я сомневаюсь, что вы услышать звук. Если это сработает, тебе повезло. Если это не так, я предлагаю вам прочитать о MediaPlayer от Android: http://www.tutorialspoint.com/android/android_mediaplayer.htm – Gavriel

ответ

1

Да, но это в основном зависит от функциональности вашего приложения или конкретной конструкции вы хотели бы достижения/применить.

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

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

Это было бы что-то вроде:

public void onClick(View v) { 
    BasicFunctions functions = new BasicFunctions(); 
    functions.play(); 
} 

А на файл BasicFunctions.java, play метод как:

public void play() { 
    //functionality to play the file 
} 

B) Вы всегда можете определить метод static для того, чтобы обойти создание дополнительного экземпляры:

public void onClick(View v) { 
    BasicFunctions.play(); 
} 

И нафайла, play метод как:

public static void play() { 
    //functionality to play the file 
} 

Но это всегда к вам и хочет, чтобы вы хотите достичь.


Редактировать

Похоже, вы только что получили HelloWorld пример сайта JFugue и попытался объединить его с Android приложения. Однако я предвижу много проблем, и одна из них может быть основной причиной вашей проблемы.

Для начала я не знал об этой библиотеке, но для чистой Java кажется, что пример HelloWorld работает как ожидалось (вместо небольшой ошибки, которую я предполагаю, существует только на моей локальной машине), которая что я слышу звук. Теперь, согласно настройке библиотеки, которую вы пытались сопровождать к ОС Android, все не так просто, поэтому я предлагаю перейти к enter link description here, проекту портирования Android в библиотеке.

Проект по-прежнему не содержит примеров использования (поэтому, если вы решите свою проблему, вы можете просто его разветвить и предоставить один, если хотите, поскольку это будет действительно полезно для будущих ссылок, таких как ваши) но его wiki pages, кажется, хорошо объяснил:

enter image description here

Кроме того, в качестве примечания для данного проекта, пожалуйста, посмотрите на this ответ.

+0

поблагодарить u toubou, но не работает !!! – John

+0

Я обновил свой ответ, надеюсь, что это путь для решения. – thodorisbais

0

Вы можете сделать это в XML - вы установили Android: метод OnClick к вашему имени метода в вашем классе Java:

<Button android:id="@+id/mybutton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Click me!" 
    android:onClick="myFancyMethod" /> 

Вы пишете метод myFancyMethod в классе Java:

Button btn = (Button) findViewById(R.id.mybutton); 

btn.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     myFancyMethod(v); 
    } 
}); 

// some more code 

public void myFancyMethod(View v) { 
    // does something very interesting 
} 

См. Решение этой темы: How exactly does the android:onClick XML attribute differ from setOnClickListener?

0

В .xml файл напишите этот.

<Button android:id="@+id/button" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="Click me!" 
android:onClick="justclick" /> 

И тогда внутри вы код JAVA реализовать метод

public void justclick(View v) { 
// does you're function 
}