Java如何在另一个类中使用活动方法

Java如何在另一个类中使用活动方法,java,android,android-activity,Java,Android,Android Activity,例如,我有一个活动课。在这个类中,我有一些变量,我想在另一个类中使用它们。代码如下: public class SearchView { private MenuActivity menuActivity; public SearchView() { menuActivity = new MenuActivity(); menuActivity.searchButton = (ImageView) menuActivity.findViewByI

例如,我有一个活动课。在这个类中,我有一些变量,我想在另一个类中使用它们。代码如下:

public class SearchView {
    private MenuActivity menuActivity;

    public SearchView() {
        menuActivity = new MenuActivity();
        menuActivity.searchButton = (ImageView) menuActivity.findViewById(R.id.searchButton);
    }
}

最后一行给了我一个
NullPointerException
。我知道我需要初始化它,但如何初始化活动?

如果需要变量的值 使用意图将其传递给下一个活动。 若它是一个静态值,那个么将它放在单独的常量文件中,并和类名一起使用。 如果是视图,请在下一个活动中再次使用该视图

public class SearchView {
    private MenuActivity menuActivity;

    public SearchView(Activity activityRef) {
        MenuActivity.searchButton = (ImageView) activityRef.findViewById(R.id.searchButton);
    }
}
public class MenuActivity extends Activity {
    public static Button searchButton;

    @Override
    protected void onCreate() {
        SearchView searchView = new SearchView(this);
    }
}
并在活动中将searchButton声明为公共静态

public class MenuActivity extends Activity {
    public static Button searchButton;

    @Override
    protected void onCreate() {
        SearchView searchView = new SearchView(this);
    }
}

希望它能帮助你。完成后请告诉我。

您有不同的选择

第一个: 创建getter以从类中获取值:

public MenuActivity getMenuActivityVar(){
    return this.MenuActivity;
}
从使用此方法的其他活动中,例如:

//Other activity or class
//Declare a new var as your class
SearchView sView = new SearchView();

MenuActivity nMenu = sView.getMenuActivityVar();
SearchView sView = new SearchView();
//In this moment your var are null.
MenuActivity MyNewMenu = sView.menuActivity;
第二个: 在本例中,is static方法意味着所有静态变量都有一个静态值,您不需要从这个静态值声明一个新类,因为它是静态的

public static class SearchView {{
    public static MenuActivity menuActivity;
    .
    .

}
通过此更改,您可以使用以下命令调用此变量:

//This call it's do it from other activity
MyNewVar = SearchView.MenuActivity;
第三个: 当您创建这样的类时,从其他活动:

//Other activity or class
//Declare a new var as your class
SearchView sView = new SearchView();

MenuActivity nMenu = sView.getMenuActivityVar();
SearchView sView = new SearchView();
//In this moment your var are null.
MenuActivity MyNewMenu = sView.menuActivity;
例如,如果您通过方法在类中修改此变量,则可以使用以下方法获取该变量:

//Other activity or class
//Declare a new var as your class
SearchView sView = new SearchView();

MenuActivity nMenu = sView.getMenuActivityVar();
SearchView sView = new SearchView();
//In this moment your var are null.
MenuActivity MyNewMenu = sView.menuActivity;

我认为最好的选择是首先,它是类中最重要的部分,从类中获取和设置。告诉我我是否帮助过你和优秀的编程

什么是空对象?R?可能menuActivity.searchButton不是图像视图?请先检查一下为什么要自己创建menuactivity?您必须从其他地方传递它,并且必须在活动中定义公共方法来调用它们。您永远不应该实例化活动类。如果希望视图位于另一个活动中,则需要在布局中具有相同的视图。还有什么是
SearchView
,为什么需要相同的?这一个很有效,谢谢。顺便说一句,我没有试过其他的。我试过了,之前是“-1”: