标题基本上都说明了一切。下面的代码不会抛出任何错误,它只是不启动新活动。代码如下。
我尝试修改startActivity(new Intent(mCtx, NewActivity.class));
以阅读startActivity(new Intent(MyListActivity.this, NewActivity.class));
我一直在Eclipse中使用AVD进行测试。
对此的任何想法都将不胜感激 - 谢谢!
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));
}
}
}
答案 0 :(得分:3)
尚未宣布该活动。
您必须将活动添加到AndroidManifest.xml
您应该将其添加到<application>
:
AndroidManifest.xml
标记中
<activity android:name="package.name.NewActivity">
<!-- Add an intent filter here if you wish -->
</activity>
onChange
方法实际上并未运行。
请使用以下代码验证是否实际调用了onChange方法:
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));
}
}
}
您还可以尝试从onCreate
启动活动以确保它可以启动。