Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.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_Android Activity_Android Intent - Fatal编程技术网

Java 从非活动类启动新活动

Java 从非活动类启动新活动,java,android,android-activity,android-intent,Java,Android,Android Activity,Android Intent,我知道有很多这样的问题,但我没有找到答案 我所拥有的: GridView+AButtonAdapter类,该类还具有一个OnClickListener类,用于获取GridView上的哪个按钮处于按下状态。(您可以在这里看到基本结构:) 我需要什么: 我需要从我的OnClickListener类开始一个新的活动。正如我所知,我只能在我的主活动类(或扩展活动的其他类)中实现它,但这正是我真正需要的。 我只知道这个结构: Intent i = new Intent(MyMain.this, MyNew

我知道有很多这样的问题,但我没有找到答案

我所拥有的:

  • GridView+AButtonAdapter类,该类还具有一个OnClickListener类,用于获取GridView上的哪个按钮处于按下状态。(您可以在这里看到基本结构:)
  • 我需要什么:

    我需要从我的
    OnClickListener
    类开始一个新的
    活动。正如我所知,我只能在我的主活动类(或扩展
    活动
    的其他类)中实现它,但这正是我真正需要的。 我只知道这个结构:

    Intent i = new Intent(MyMain.this, MyNewActivity.class)
    startActivity(i);
    

    我希望能够从我的
    OnClickListener
    类中使用此结构。

    按钮适配器中
    构造函数传递构建适配器的
    活动的上下文,然后使用该
    上下文启动新的
    活动

    编辑: 按照该教程,当您构建适配器时,您将执行以下操作:

    ButtonAdapter adapter = new ButtonAdapter(this);// this is the activity(if you create in an activity the adapter)
    
    btn.setOnClickListener(new MyOnClickListener(position, mContext));
    
    您在
    按钮适配器的构造函数中获得的
    上下文
    ,您将把它传递给您的
    OnClickListener

        class MyOnClickListener implements OnClickListener  
        {  
         private final int position;  
    private Context ctx;
    
         public MyOnClickListener(int position, Context ctx)  
         {  
          this.position = position;  
    this.ctx = ctx;
         }  
    
         public void onClick(View v)  
         {  
          // Preform a function based on the position  
          someFunction(this.position)  
          Intent i = new Intent(MyMain.this, MyNewActivity.class)
    ctx.startActivity(i);
         }  
        }  
    
    然后像这样使用它:

    ButtonAdapter adapter = new ButtonAdapter(this);// this is the activity(if you create in an activity the adapter)
    
    btn.setOnClickListener(new MyOnClickListener(position, mContext));
    

    按钮适配器中
    构造函数传递构建适配器的
    活动的上下文
    ,然后使用该
    上下文
    启动新的
    活动

    编辑: 按照该教程,当您构建适配器时,您将执行以下操作:

    ButtonAdapter adapter = new ButtonAdapter(this);// this is the activity(if you create in an activity the adapter)
    
    btn.setOnClickListener(new MyOnClickListener(position, mContext));
    
    您在
    按钮适配器的构造函数中获得的
    上下文
    ,您将把它传递给您的
    OnClickListener

        class MyOnClickListener implements OnClickListener  
        {  
         private final int position;  
    private Context ctx;
    
         public MyOnClickListener(int position, Context ctx)  
         {  
          this.position = position;  
    this.ctx = ctx;
         }  
    
         public void onClick(View v)  
         {  
          // Preform a function based on the position  
          someFunction(this.position)  
          Intent i = new Intent(MyMain.this, MyNewActivity.class)
    ctx.startActivity(i);
         }  
        }  
    
    然后像这样使用它:

    ButtonAdapter adapter = new ButtonAdapter(this);// this is the activity(if you create in an activity the adapter)
    
    btn.setOnClickListener(new MyOnClickListener(position, mContext));
    

    因为MyOnClickListener.onClick()中有View对象,所以只需使用View.getContext()即可(http://developer.android.com/reference/android/view/View.html#getContext())获取上下文对象并启动另一个活动。

    因为MyOnClickListener.onClick()中有View对象,所以只需使用View.getContext()即可(http://developer.android.com/reference/android/view/View.html#getContext())获取上下文对象并启动另一个活动。

    找不到如何传递活动的上下文,请编写一些示例代码好吗?找不到如何传递活动的上下文,请编写一些示例代码好吗?