【问题标题】:Starting activity on nonactivity class and using media player on Android在非活动类上启动活动并在 Android 上使用媒体播放器
【发布时间】:2011-12-07 13:51:14
【问题描述】:

我是 android 编程新手,我在从另一个班级和媒体播放器开始新活动时遇到问题。我的活动类有一个媒体控制器。 我尝试这样调用活动:

public void Collide(FlxCore object1, FlxCore object2) {
        player.kill();
        Context mContext = null;
        Intent myIntent = new Intent(mContext, soru.class);
        mContext.startActivity(myIntent);
    }

我的活动是:

public class soru extends Activity {
    private VideoView mVideoView;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.soru);
        mVideoView = (VideoView) findViewById(R.id.surface_view);
        mVideoView.setVideoURI(Uri.parse("android.resource://"
                + getPackageName() + "/" + R.raw.arabaa));
        mVideoView.setMediaController(new MediaController(this));
        mVideoView.requestFocus();
    }

}

那么问题来了

12-07 13:14:54.675: W/dalvikvm(526): threadid=9: thread exiting with uncaught exception (group=0x40015560)
12-07 13:14:54.675: E/AndroidRuntime(526): FATAL EXCEPTION: Thread-10
12-07 13:14:54.675: E/AndroidRuntime(526): java.lang.NullPointerException
12-07 13:14:54.675: E/AndroidRuntime(526):  at android.content.ComponentName.<init>(ComponentName.java:75)
12-07 13:14:54.675: E/AndroidRuntime(526):  at android.content.Intent.<init>(Intent.java:2702)
12-07 13:14:54.675: E/AndroidRuntime(526):  at org.myname.flixeldemo.GameState$3.Collide(GameState.java:101)
12-07 13:14:54.675: E/AndroidRuntime(526):  at org.flixel.FlxG.overlapArrayList(FlxG.java:456)
12-07 13:14:54.675: E/AndroidRuntime(526):  at org.myname.flixeldemo.GameState.update(GameState.java:95)
12-07 13:14:54.675: E/AndroidRuntime(526):  at org.flixel.FlxGame.onEnterFrame(FlxGame.java:327)
12-07 13:14:54.675: E/AndroidRuntime(526):  at org.flixel.FlxGameView$GameThread.run(FlxGameView.java:55)
12-07 13:14:54.815: E/MediaPlayer(526): pause called in state 64
12-07 13:14:54.815: E/MediaPlayer(526): error (-38, 0)
12-07 13:14:54.815: E/MediaPlayer(526): Error (-38,0)
12-07 13:19:54.830: I/Process(526): Sending signal. PID: 526 SIG: 9

我无法理解问题到底是什么以及如何解决它。请帮助我。

【问题讨论】:

  • 你应该看看这个:source.android.com/source/code-style.html 如果你遵循 android codestyle 的约定。那么可能是你不知道如何使用stackoverflow..请将你的代码放在代码括号中,现在完全不可能阅读你的代码。恕我直言。

标签: android


【解决方案1】:

这个并不难猜。

您的错误指向 NullPointerException,这意味着您正在尝试使用一个为空或不存在的对象。

快速浏览您的代码会发现问题:

Collide(FlxCore object1, FlxCore object2) {
    player.kill();
    Context mContext = null; // <<- You're creating an empty context object
    Intent myIntent = new Intent(mContext, soru.class); // And then
    mContext.startActivity(myIntent); // Use it for multiple functions
}

你不能使用这样的空对象。尝试使用this(yourclassname).this 而不是null

【讨论】:

  • 感谢您的回复。但是当我尝试使用 this or (classname).this 时,我的类和上下文不匹配。我的课不是一个活动,它只是一个课。有没有其他方法在我的课堂上调用活动或解决这个问题?
  • 您可以在创建时尝试将上下文发送到助手类。查看此线程以获取更多信息:stackoverflow.com/questions/5339941/…stackoverflow.com/questions/5498669/…
  • 根据您的建议,我解决了这个问题。问题是我所有的课程都是非活动的,但只有一个活动课程。我从中获取上下文,然后我可以开始我的活动。
  • 那么您的问题现在解决了吗?
  • 是的,现在问题已解决。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多