0

When I only run the java file it produces sound. I now want on button click to call the java file and produce the sound in eclipse.

Here is my Java code:

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");
 }    
}

And my MainActivity.java in eclipse:

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???     
 }
}
4

3 回答 3

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)您总是可以定义一个静态方法来绕过创建额外的实例:

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

BasicFunctions.java文件上,一个play类似的方法:

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

但这始终取决于您并希望您想要实现。


编辑

似乎您刚刚获得了HelloWorldJFugue 网站的示例,并尝试将其与您的 Android 应用程序结合起来。但是,我预见到很多问题,其中之一可能是您问题的根本原因。

首先,我不知道这个库,但对于纯 Java,该HelloWorld示例似乎按预期工作(而不是一个小错误,我认为它只存在于我的本地机器上),我可以听到声音。现在,根据你尝试对Android OS的库的调整,事情并不那么容易,所以我建议在这里输入链接描述,一个库的Android移植项目。

该项目仍然没有提供任何使用示例(因此,如果要解决您的问题,您可以只分叉它并提供一个,如果您愿意,因为它对将来的参考很有帮助,比如您的),但是它的wiki 页面似乎很好解释:

在此处输入图像描述

另外,作为上述项目的附注,请查看答案。

于 2016-01-15T08:05:03.123 回答
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
 }
于 2016-01-15T08:59:25.720 回答
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 
} 

请参阅此线程的解决方案:android:onClick XML 属性与 setOnClickListener 有何不同?

于 2016-01-15T08:42:48.710 回答