从活动传递数据到类扩展视图

Posted

技术标签:

【中文标题】从活动传递数据到类扩展视图【英文标题】:Pass Data Moving from activity to Class extends View 【发布时间】:2015-07-04 23:43:22 【问题描述】:

我正在尝试将 MainActivity 中的数据传递给我的类 VistaJuego,该类绘制了一个在屏幕上移动的玩偶,但是当它与障碍物碰撞时,游戏停止并且意图应该转到另一个活动。我需要 MainActivity 的上下文来执行我的意图,但 Eclipse 总是显示 NullPointerException。

我的 MainActivity 公共类 MainActivity 扩展 Activity 相对布局相对; 静态活动 ac;

@Override
protected void onCreate(Bundle savedInstanceState) 
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    vistafaba=(VistaJuego)findViewById(R.id.faba);
    relative=(RelativeLayout)findViewById(R.id.relative);
    ac=this.getActivity();

public void goToActivityLosed()
    Intent i= new Intent(this,ActivityLosed.class);
    startActivity(i);
 

还有我的 VistaJuego

 public class VistaJuego extends View 



ThreadJuego juego = new ThreadJuego();
ThreadFaba hiloFaba= new ThreadFaba();

MainActivity main;

public VistaJuego(Context context, AttributeSet attrs) 
    super(context, attrs);
    //dialogo= new DialogoFinJuego(MainActivity.this);
    main= new MainActivity();

public void whenBeanCrash(Grafico elementofaba,Grafico elementoBotella)

    if((elementofaba.getPosX()+elementofaba.getAncho()>=elementoBotella.getPosX()+15)&&
            (elementofaba.getPosX()+elementofaba.getAncho() <= elementoBotella.getPosX()+elementoBotella.getAncho()+15)&&
            (elementofaba.getPosY()+elementofaba.getAlto()>=elementoBotella.getPosY())
            && (elementofaba.getPosY()+elementofaba.getAlto() <= elementoBotella.getPosY()+elementoBotella.getAlto()))
        juego.detener();
        hiloFaba.detener();

        main.goToActivityLosed();

    

【问题讨论】:

【参考方案1】:

如果你想启动一个活动,使用上下文而不是活动

例子:

public void whenBeanCrash(Grafico elementofaba,Grafico elementoBotella)
     // ...
     // and not main.goToActivityLosed()
     Context context = getContext();
     context.startActivity(new Intent(context, YourActivity.class));

或者你可以创建一个函数来设置一个活动对象:

public void setActivity(MainActivity activity)
       this.activity = activity;
       // and now in whenBeanCrash() you can use this.activity to call function from this class

【讨论】:

我已经使用了你的代码,但是我的 logCat 显示这个 java.lang.runtimeexception 无法启动活动组件信息 编辑问题并通过 logcat。 PS。和过去的 androidManifest.xml 可能你没有在AndroidManifest.xml中声明activity 否,因为我在 AndroidManifest.xml 中看到了我的代码并且我的活动在那里。但情况是,VistaJuego 是 MainActivity 中的一个类,并使用 Thread 在屏幕上移动,我希望当与瓶子碰撞时 ActivityLosed 好的,但如果你没有通过 logcat,我无法帮助你。你可以上传截图来提问

以上是关于从活动传递数据到类扩展视图的主要内容,如果未能解决你的问题,请参考以下文章

将数据从内部视图传递到活动

将数据从片段列表视图项传递到活动字符串变量 onitemclicklistener

如何将数据从功能组件传递到类组件

通过第二个活动从数据库传递列表视图的项目位置

如何将数据从 sqlite 数据库传递到另一个活动?

将数据从列表视图(从 Rest Api 生成)传递到另一个活动并将其保存到 SQLite 数据库中