Android:点击按钮

时间:2016-09-17 18:27:33

标签: java android button android-activity methods

我的Android Studio项目中有2个带有2个XML布局文件的Java类。第一个类是我的MainActivity类和第二个类显示的地图的容器。布局工作正常,但我的第二个类的XML文件中有一个Button,它被设置为在单击时调用我的第二个类中的方法。但该按钮只能调用我的MainActivity类中的方法。我怎么能让Button调用另一个方法,让我们说一个来自另一个类的方法而不是我的MainActivity类?

非常感谢您的帮助。

提前致谢。

/编辑:

我现在可以调用另一种方法,但每次尝试从MainActivity类访问某些内容时,应用程序都会崩溃。代码示例:

public void test() { 
  TextView tv = (TextView) getActivity().findViewById(R.id.textView); 
  tv.setText("2"); 
} 

这是从MainActivity类调用的第二个类的方法。该调用工作正常,但我无法从布局中访问任何内容。如果它有助于该类是一个片段,其中包含一个MapView:

public class MapsFragment extends Fragment {

3 个答案:

答案 0 :(得分:0)

在Mainactivity中创建第二个类的对象。 然后使用该对象来调用第二类的函数。

已编辑 -

我看到你不需要创建像fragment_obj.updateTextView();这样的函数。我将所有视图设置为类级别对象,并且能够直接更新textview。

fragmentObj.textViewLanguage.setText("Your Text Here!");

注意:如果您需要执行多个操作,那么可以使用函数。

使用功能 - 您可以使用

找到Fragment的实例

对于支持库,

YourFragment fragment_obj = (YourFragment)getSupportFragmentManager().
                          findFragmentById(R.id.fragment_id);

否则

YourFragment fragment_obj = (YourFragment)getFragmentManager().
                                         findFragmentById(R.id.fragment_id); 

然后在Fragment中创建一个更新TextView并使用fragment_obj调用该方法的方法,

fragment_obj.updateTextView();

答案 1 :(得分:0)

您不必通过xml android:onClick将xml按钮连接到方法,您可以通过代码轻松完成:

Button b = (Button) findViewById(R.id.my_button);
b.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        // call the method
    }
});

答案 2 :(得分:0)

进入您的XML代码并添加此属性android:onClick="OnClickMe",然后进入您想要访问其他方法的类,并添加控制Button点击的方法。

首先在Oncreate

中声明您的按钮
Button b = (Button) findViewById(R.id.my_button);

然后创建一个方法来处理按钮单击,并在实例化实例化类中以访问所需的方法。假设您要访问ClassA

 public void OnClickMe(View v ){

// Suppose you want to access a method from ClassA 
ClassA accessmethod = new ClassA();
// this is how you can call your method in another class
accessmethod.MethodName();

    }