Android:saveBookmark活动

Android:saveBookmark活动,android,Android,我正在尝试启动saveBookmark活动,但由于未知原因,我强制关闭了它。 它说它是NULL,但它应该是NULL,因为“title”和“url”是可选的(另外,我尝试用字符串数据替换NULL,得到了相同的强制关闭) 以下是按钮侦听器: Button addBookBtn = (Button) findViewById(R.id.add_bookmark); addBookBtn.setOnClickListener(new OnClickListener() {

我正在尝试启动saveBookmark活动,但由于未知原因,我强制关闭了它。 它说它是NULL,但它应该是NULL,因为“title”和“url”是可选的(另外,我尝试用字符串数据替换NULL,得到了相同的强制关闭)

以下是按钮侦听器:

Button addBookBtn = (Button) findViewById(R.id.add_bookmark);
        addBookBtn.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                saveBookmark(context, null, null);
            }
        });
以下是saveBookmark方法:

public static final void saveBookmark(Context c, String title, String url) {
        Intent i = new Intent(Intent.ACTION_INSERT, android.provider.Browser.BOOKMARKS_URI);
        i.putExtra("title", title);
        i.putExtra("url", url);
        c.startActivity(i);
    }
这是单击“添加”按钮时出现的致命错误:

E/AndroidRuntime(17252): FATAL EXCEPTION: main
E/AndroidRuntime(17252): java.lang.NullPointerException
E/AndroidRuntime(17252):        at com.droidil.droidmarks.Dmarks.saveBookmark(Dm
arks.java:81)
E/AndroidRuntime(17252):        at com.droidil.droidmarks.Dmarks$2.onClick(Dmark
s.java:71)
E/AndroidRuntime(17252):        at android.view.View.performClick(View.java:2408
)
E/AndroidRuntime(17252):        at android.view.View$PerformClick.run(View.java:
8818)
E/AndroidRuntime(17252):        at android.os.Handler.handleCallback(Handler.jav
a:587)
E/AndroidRuntime(17252):        at android.os.Handler.dispatchMessage(Handler.ja
va:92)
E/AndroidRuntime(17252):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime(17252):        at android.app.ActivityThread.main(ActivityThrea
d.java:4627)
E/AndroidRuntime(17252):        at java.lang.reflect.Method.invokeNative(Native
Method)
E/AndroidRuntime(17252):        at java.lang.reflect.Method.invoke(Method.java:5
21)
E/AndroidRuntime(17252):        at com.android.internal.os.ZygoteInit$MethodAndA
rgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime(17252):        at com.android.internal.os.ZygoteInit.main(Zygot
eInit.java:626)
E/AndroidRuntime(17252):        at dalvik.system.NativeStart.main(Native Method)

谢谢你的帮助

您可以执行一种称为重载的操作—如果您有可选参数,这种方法效果最好

public static final void saveBookmark(Context c) {
  Intent i = new Intent(Intent.ACTION_INSERT, android.provider.Browser.BOOKMARKS_URI);
  c.startActivity(i);
}

public static final void saveBookmark(Context c, String title, String url) {
  Intent i = new Intent(Intent.ACTION_INSERT, android.provider.Browser.BOOKMARKS_URI);
  i.putExtra("title", title);
  i.putExtra("url", url);
  c.startActivity(i);
}
我们在这里定义了两次这个方法,使用不同的参数安排——Java非常聪明,可以根据您给出的参数知道使用哪一个。这只是一个例子,说明了如何使用重载来实现您想要的功能。

您是否放置了
清单中活动的条目?
否则,上下文为空,但如果扩展ListActivity,则没有理由这样做。

来自Intent API条目:

public Intent putExtra(String name, Bundle value)
将扩展数据添加到意图中。这个 名称必须包含一个包 前缀,例如应用程序 com.android.contacts将使用以下名称 “com.android.contacts.ShowAll”

putExtra()调用中未包含包前缀,例如:

i.putExtra(“yourpackage.title”,title)


我想我们需要更多的信息来全面诊断您的异常,但这可能是一个问题。

我仍然收到相同的致命错误…:\也许上下文是空的?已尝试getApplicationContext(),但相同。。。强制关闭。顺便说一下,尝试保存书签(上下文);要强制它选择您编写的第一个方法,但它仍然强制关闭:\Maybe Manifest issues?意图过滤器?尝试clean+build-它可能没有正确重新编译。好的,我可能需要查看所有代码-saveBookmark不在活动类中吗?然后,对于上下文,您应该传递WhateVertexClassNameis。这-让我知道这是否有效。(即saveBookmark(什么是类名,这个);)是的,我确实有这个意图。这个列表很有用,列出了所有的书签。。。谢谢你的回复。xil3为我解决了这个问题,我必须把saveBookmark(什么是classnameis.this);)而不是传递上下文。