startactivity()不是从一个扩展ListActivity内部类工作 [英] startactivity() not working from inner class that extends ListActivity

查看:106
本文介绍了startactivity()不是从一个扩展ListActivity内部类工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

标题基本上说明了一切。下面code不抛出任何错误,它只是不启动新的活动。低于code。

我曾尝试修改 startActivity(新意图(mCtx,NewActivity.class)); startActivity(新意图(MyListActivity.this, NewActivity.class));

我已经在Eclipse与AVD测试此。

在这个任何想法,将AP preciated - !谢谢

 公共类MyListActivity扩展ListActivity {私人语境mCtx;
MyContentObserver mContentObserver;@覆盖
公共无效的onCreate(捆绑onSavedInstance){
    super.onCreate(onSavedInstance);
    的setContentView(R.layout.calls_list);    mContentObserver =新MyContentObserver(本);    。this.getApplicationContext()getContentResolver()registerContentObserver(CallLog.Calls.CONTENT_URI,真实,mContentObserver)。}私有类MyContentObserver扩展ContentObserver {
    私人语境mCtx;
    公共MyContentObserver(上下文CTX){
        超(NULL);
        mCtx = CTX;
    }    @覆盖
    公共无效的onChange(布尔selfChange){
        super.onChange(selfChange);
        startActivity(新意图(mCtx,NewActivity.class));
    }
}
}


解决方案

可能的原因1

该活动尚未宣布。

您必须将活动添加到您的的Andr​​oidManifest.xml

您应该添加到您的<应用> 标记中的的Andr​​oidManifest.xml

 <活动机器人:名字=package.name.NewActivity>
    <! - 在这里,如果你想添加一个意图过滤器 - >
< /活性GT;

可能的原因2

的onChange 方法实际上并不运行。

请使用以下code来验证的onChange方法实际上被调用:

 公共类MyListActivity扩展ListActivity {
    MyContentObserver mContentObserver;    @覆盖
    公共无效的onCreate(捆绑onSavedInstance){
        super.onCreate(onSavedInstance);
        的setContentView(R.layout.calls_list);        mContentObserver =新MyContentObserver();        。this.getApplicationContext()getContentResolver()registerContentObserver(CallLog.Calls.CONTENT_URI,真实,mContentObserver)。
    }    私有类MyContentObserver扩展ContentObserver {
        公共MyContentObserver(){
            超(NULL);
        }        @覆盖
        公共无效的onChange(布尔selfChange){
            super.onChange(selfChange);
            Log.d(MyListActivity.MyContentObserver,的onChange);
            startActivity(新意图(MyListActivity.this,NewActivity.class));
        }
    }
}

您也可以尝试从的onCreate 开展活动,以确保它可以启动。

Title basically says it all. The below code doesn't throw any errors, it just doesn't start the new activity. Code below.

I have tried modifying startActivity(new Intent(mCtx, NewActivity.class)); to read startActivity(new Intent(MyListActivity.this, NewActivity.class));

I have been testing this in Eclipse with an AVD.

Any thoughts on this would be appreciated - thanks!

public class MyListActivity extends ListActivity {

private Context mCtx;
MyContentObserver mContentObserver;

@Override
public void onCreate(Bundle onSavedInstance) {
    super.onCreate(onSavedInstance);
    setContentView(R.layout.calls_list);

    mContentObserver = new MyContentObserver(this);

    this.getApplicationContext().getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, true, mContentObserver);

}

private class MyContentObserver extends ContentObserver {
    private Context mCtx;
    public MyContentObserver(Context ctx ) {
        super(null);
        mCtx = ctx;
    }

    @Override
    public void onChange(boolean selfChange) {
        super.onChange(selfChange);
        startActivity(new Intent(mCtx, NewActivity.class));
    }
}   
}

解决方案

Possible cause 1

The activity has not been declared.

You have to add the activity to your AndroidManifest.xml

You should add this to your <application> tag in your AndroidManifest.xml:

<activity android:name="package.name.NewActivity">
    <!-- Add an intent filter here if you wish -->
</activity>

Possible cause 2

The onChange method doesn't actually run.

Please use the code below to verify that the onChange method actually gets called:

public class MyListActivity extends ListActivity {
    MyContentObserver mContentObserver;

    @Override
    public void onCreate(Bundle onSavedInstance) {
        super.onCreate(onSavedInstance);
        setContentView(R.layout.calls_list);

        mContentObserver = new MyContentObserver();

        this.getApplicationContext().getContentResolver().registerContentObserver(CallLog.Calls.CONTENT_URI, true, mContentObserver);
    }

    private class MyContentObserver extends ContentObserver {
        public MyContentObserver() {
            super(null);
        }

        @Override
        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Log.d("MyListActivity.MyContentObserver", "onChange");
            startActivity(new Intent(MyListActivity.this, NewActivity.class));
        }
    }   
}

You could also try launching the activity from onCreate to make sure it can be launched.

这篇关于startactivity()不是从一个扩展ListActivity内部类工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆