Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.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
Android 意图调用的活动的对象是什么_Android_Class_Android Intent - Fatal编程技术网

Android 意图调用的活动的对象是什么

Android 意图调用的活动的对象是什么,android,class,android-intent,Android,Class,Android Intent,我想知道当我出于某种目的开始某项活动时,它的对象是什么 这意味着:如何调用活动的对象。或者是我搞错了什么,一个活动被一个对象表示了吗 示例:在MainActivity中,我执行以下操作: ShowExampleScreen = new Intent(MainActivity.this, ExampleClass.class); startActivity(ShowExampleScreen); public class ExampleClass{ oncreate( Stuff in

我想知道当我出于某种目的开始某项活动时,它的对象是什么

这意味着:如何调用活动的对象。或者是我搞错了什么,一个活动被一个对象表示了吗

示例:在MainActivity中,我执行以下操作:

ShowExampleScreen = new Intent(MainActivity.this, ExampleClass.class);
startActivity(ShowExampleScreen);

public class ExampleClass{

    oncreate( Stuff in on create)

    public void myFunction(){ my stuff} 
}
如何在其他类中使用myFunc而不声明其为静态?
如何获取由意图启动的活动对象?

在Android中,这是活动生命周期的工作方式:

我建议你先把基本原理弄清楚

根据指导原则,您不应从另一个活动调用一个活动的方法


但是,您可以使用
startActivityForResult
。ie您可以启动活动并返回结果。对于实现

有多种方法,下面是我使用的几种方法:

  • 从另一个类/方法:

    只需将活动作为参数传递,因为您需要最新的活动对象,所以不希望将其存储在某个地方,一旦活动被销毁,它可能会变为null

  • 从其他类中非常深入的方法:

    我并不建议这样做,但我有时会这样做,只需在活动本身中创建活动的静态对象,并确保每次更新活动时都分配它,比如在onResume方法或onCreate中

    public static Activity app; //in your Activity as a field (instance variable)
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        app = this;
     }
    
  • 从片段中:

    MyActivity app=(MyActivity)getActivity()//getActivity()是一个片段方法


为什么需要由意图启动的活动的对象。当触发意图时,它将启动ExampleClass表示的活动。请确保ExampleClass扩展活动并在清单文件中声明它是的,活动会按所需启动,但例如,当我希望myFunc是一个textfield setter类,并且希望从其他地方调用它时,我必须创建ExampleClass的对象。我希望这个对象是由Intent启动的对象,这样我就可以设置activites视图中显示的文本视图。您希望得到什么样的答案?你不应该从其他活动中调用活动方法。你所要求的实际上是不可行的。考虑将“我的东西”的值作为一个额外的意图来传递,这样活动就可以利用它做些事情了。对不起,我对安卓相当陌生,正在做我的第一步。所以你会说,我会做一个类,我做计算和文本视图的东西,在视图中,我只是指这些对象,然后呢?谢谢,我想第一个是答案。我现在通过创建一个底层数据存储类来解决了这个问题,在主活动开始时,我从中创建了一个对象。然后,我的第二个屏幕活动只是从参考底图数据对象中收集数据。所以我不需要处理这个活动对象的东西。你能告诉我哪种方法是“更干净”的方法吗?最好的方法是像所有时间一样作为参数传递。这是最安全的方法,但有时你需要另一种方法,所以这取决于你,但你需要小心并做好记录。