Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从其他活动调用主活动中的方法?_Java_Android_Methods_Android Activity_Static Methods - Fatal编程技术网

Java 如何从其他活动调用主活动中的方法?

Java 如何从其他活动调用主活动中的方法?,java,android,methods,android-activity,static-methods,Java,Android,Methods,Android Activity,Static Methods,我想从其他活动调用主活动中的public方法。我该怎么做 class MainActivity extends Activity { public void myMethod() {} } class MyActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // How c

我想从其他活动调用主活动中的public方法。我该怎么做

class MainActivity extends Activity {
    public void myMethod() {}
}

class MyActivity extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // How can I call myMethod() in MainActivity?
    }
}
视情况而定

在这种情况下,如果您只想使用一些共享功能作为示例,请使用执行一些计算的代码

我建议将此共享功能移动到某个独立类,并从那里调用它

在这种情况下,如果您想调用MainActivity,那么MainActivity使用MainActivity UI做了一些事情,您必须使用Intent,因为MainActivity应该首先恢复,并且只有在恢复之后,它才能使用UI做些事情

在这种情况下,您可能需要向intent添加一些额外的内容,这些内容将由onCreate或onResume中的MainActivity代码解析,并调用适当的方法

视情况而定

在这种情况下,如果您只想使用一些共享功能作为示例,请使用执行一些计算的代码

我建议将此共享功能移动到某个独立类,并从那里调用它

在这种情况下,如果您想调用MainActivity,那么MainActivity使用MainActivity UI做了一些事情,您必须使用Intent,因为MainActivity应该首先恢复,并且只有在恢复之后,它才能使用UI做些事情

在这种情况下,您可能需要向intent添加一些额外的内容,这些内容将由onCreate或onResume中的MainActivity代码解析,并调用适当的方法


将myMethod声明为静态

public static void myMethod()
{
...
}

通过MainActivity.myMethod在应用程序中的任意位置调用它

将myMethod声明为静态

public static void myMethod()
{
...
}
通过MainActivity.myMethod在应用程序中的任意位置调用它

使其静态化、传入活动、实例化,或者更好地重新思考设计方法?我认为您不应该从主活动调用另一个活动中的方法-创建一个新类可能更好

静态代码:

class MainActivity extends Activity 
{
    public void myMethod() 
    {
        MyActivity.runMyMethod();
    }
}


class MyActivity extends Activity 
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
    }

    public static void runMyMethod() 
    {
        //Run code...
    }
}
实例化活动:

class MainActivity extends Activity 
{
    public void myMethod() 
    {
        MyActivity myActivity = new MyActivity();
        myActivity.runMyMethod();
    }
}

class MyActivity extends Activity 
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
    }

    public void runMyMethod() 
    {
        //Run code...
    }
}
通过活动参考:

class MainActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
            OtherActivity otherActivity = new OtherActivity(this);
    }

    public void yourMethod()
    {
    }

}

class OtherActivity extends Activity
{
    MainActivity mainRefrence;
    OtherActivity(MainActivity main)
    {
        mainRefrence = main;
    }

    public void onCreate()
    {
        mainRefrence.yourMethod();
    }
}
使其静态化、传入活动、实例化,或者更好地重新思考设计方法?我认为您不应该从主活动调用另一个活动中的方法-创建一个新类可能更好

静态代码:

class MainActivity extends Activity 
{
    public void myMethod() 
    {
        MyActivity.runMyMethod();
    }
}


class MyActivity extends Activity 
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
    }

    public static void runMyMethod() 
    {
        //Run code...
    }
}
实例化活动:

class MainActivity extends Activity 
{
    public void myMethod() 
    {
        MyActivity myActivity = new MyActivity();
        myActivity.runMyMethod();
    }
}

class MyActivity extends Activity 
{
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
    }

    public void runMyMethod() 
    {
        //Run code...
    }
}
通过活动参考:

class MainActivity extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
            OtherActivity otherActivity = new OtherActivity(this);
    }

    public void yourMethod()
    {
    }

}

class OtherActivity extends Activity
{
    MainActivity mainRefrence;
    OtherActivity(MainActivity main)
    {
        mainRefrence = main;
    }

    public void onCreate()
    {
        mainRefrence.yourMethod();
    }
}

如果你想从任何活动中调用静态方法,你应该有一个Utility或Helper类,你可以从任何地方静态调用这些方法。我不认为将一个活动中的静态方法调整到另一个活动中是一个很好的做法

下面是一个Helper类的示例

   public Class ActivityHelper{

    public static void myMethod(Context context){
    // If you need to do something with your Context

    }

/* and you can create a lot of  static methods that you would need to use from any activity or service on your app*/

}

如果你想从任何活动中调用静态方法,你应该有一个Utility或Helper类,你可以从任何地方静态调用这些方法。我不认为将一个活动中的静态方法调整到另一个活动中是一个很好的做法

下面是一个Helper类的示例

   public Class ActivityHelper{

    public static void myMethod(Context context){
    // If you need to do something with your Context

    }

/* and you can create a lot of  static methods that you would need to use from any activity or service on your app*/

}
如何从另一个活动调用MainActivity中的方法

有时您无法使该方法成为静态的,因为它依赖于MainActivity中的所有其他状态。使所有依赖状态也保持静态等同于使所有事物都是全局的,这不是一个好主意

另外,在MainActivity上调用一个非静态方法也没有什么错——就像一个类调用另一个类一样

以下是您要做的:

您的应用程序将在您的所有活动中共享,前提是它们都在同一流程中。此应用程序可用于存储状态。虽然一个明智的想法是只存储活动的实例,并让它们存储各自的状态,这就是我们要做的

创建自己的应用程序子类:

公共类MyApplication扩展了应用程序 { 主要活动主要活动; }

调整舱单:

如何从另一个活动调用MainActivity中的方法

有时您无法使该方法成为静态的,因为它依赖于MainActivity中的所有其他状态。使所有依赖状态也保持静态等同于使所有事物都是全局的,这不是一个好主意

另外,在MainActivity上调用一个非静态方法也没有什么错——就像一个类调用另一个类一样

以下是您要做的:

您的应用程序将在您的所有活动中共享,前提是它们都在同一流程中。此应用程序可用于存储状态。虽然一个明智的想法是只存储活动的实例,并让它们存储各自的状态,这就是我们要做的

创建自己的应用程序子类:

公共类MyApplication扩展了应用程序 { 主要活动主要活动; }

调整舱单:


我想知道调用非静态方法的方法。我将阅读链接。非静态方法在我的答案中。这是以前问过的。我想知道调用非静态方法的方法。我将阅读链接。非s
方法在我的答案中。我想从其他活动调用主活动中的方法。不管怎样,谢谢你。那也是同样的想法吗?在主活动中放置一个静态方法,然后执行MainActivity.static方法;或者将mainActivity传递给下一个类。我将进行编辑以显示如何执行此操作。我想从其他活动调用主活动中的方法。不管怎样,谢谢你。那也是同样的想法吗?在主活动中放置一个静态方法,然后执行MainActivity.static方法;或者将mainActivity传递给下一个类。我将进行编辑以显示如何执行此操作。我无法将其设置为静态。无论如何谢谢你。我不能让它静止。无论如何,谢谢。使用startActivityForResult检查使用startActivityForResult检查