0

我试图找出我的问题出在哪里。我知道问题是 NullPointerException。但我不知道为什么。

我只有一个启动活动的按钮。

这是导致问题的代码部分。如果我删除 startactivity 它工作正常。并且该异常仅在 Intent.Method1 成功结束后发生。

methodtest(parm1);

try{
        startActivity( IntentFactory.Method1(parm1, parm2) );
    } catch(ActivityNotFoundException e){
        showToast(getText(R.string.error1));
    }

这是我的异常日志。

07-06 08:09:03.176: E/AndroidRuntime(2385): java.lang.RuntimeException: 无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.TabbedNavigationActivity}: java.lang.RuntimeException :无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}:java.lang.NullPointerException
07-06 08:09:03.176:E/AndroidRuntime(2385):原因:java。 lang.RuntimeException: 无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}: java.lang.NullPointerException
07-06 08:09:03.176: E/AndroidRuntime(2385): at net .apptest.app1.abstivities.AbstractHttpActivity.registerOnClickListener(AbstractHttpActivity.java:262)
07-06 08:09:03.176: E/AndroidRuntime(2385): 在 net.apptest.app1.activities.MainActivity.onCreate(MainActivity.java:309)
07-06 08:09:03.176: E/AndroidRuntime(2385) : 在 net.apptest.app1.activities.ExtrasActivity.onCreate(ExtrasActivity.java:18)
07-06 08:17:38.779: E/AndroidRuntime(2699): java.lang.RuntimeException: 无法启动活动 ComponentInfo{net. apptest.app1/net.apptest.app1.activities.TabbedNavigationActivity}:java.lang.RuntimeException:无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}:java.lang.NullPointerException
07-06 08:17:38.779:E/AndroidRuntime(2699):原因:java.lang.RuntimeException:无法启动活动 ComponentInfo{net.apptest.app1/net.apptest.app1.activities.ExtrasActivity}:java。 lang.NullPointerException
07-06 08:17:38.779: E/AndroidRuntime(2699): 在 net.apptest.app1.abstivities.AbstractHttpActivity.registerOnClickListener(AbstractHttpActivity.java:262)
07-06 08:17:38.779: E/AndroidRuntime (2699): 在 net.apptest.app1.activities.MainActivity.onCreate(MainActivity.java:309)
07-06 08:17:38.779: E/AndroidRuntime(2699): 在 net.apptest.app1.activities.ExtrasActivity。 onCreate(ExtrasActivity.java:18)

AbstractHTTPActivity 中的第 262 行:

 * @param v
     *            The view an OnClickListener should be registered for
     * @param id
     *            The id used to identify the item clicked (<code>ITEM_*</code>
     *            statics)
     */
    protected void registerOnClickListener(View v, final int id) {
        v.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                onItemClicked(id);
            }
        });
    }

MainActivity 中的第 309 行:

mDB2S = (Button) findViewById(R.id.ButtonDB2S);
registerOnClickListener(mDB2S, ITEM_DB2S);

ExtrasActivity 中的第 18 行:

super.onCreate(savedInstanceState);

还有我的 layout.xml

            <Button
                android:id="@+id/ButtonDB2S"
                android:layout_width="fill_parent"
                android:layout_height="65dp"
                android:layout_gravity="center_vertical"
                android:layout_weight="1"
                android:drawableLeft="@drawable/ic_menu_help"
                android:text="@string/db2" />

这是我的 IntentFactory.Method1。它只启动一个视频,它通常可以正常工作。我在第二个地方使用这种方法,它毫无例外地工作。Methodtest 是另一种运行良好的方法,只有 startActivity 行导致了这个问题。

    public static Intent Method1 (String parm1, String parm2) {
        Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse(parm1), "video/*");     
        return intent;
    }

编辑:我已经调试了更多,并发现了 NullPointerException 发生的位置。在 MainActivity 上,我在启动时将按钮加载到 mDB2,它工作正常。在我退出由 IntentFactory.Method1 启动的视频播放器后,视图被重新加载,这意味着 MainActivity 再次启动。但是现在 mDB2 找不到按钮并且为 NULL。但是在第一次运行时它可以正常工作

4

1 回答 1

0

我已经解决了我的问题。解决方案非常简单,我之前没有检查过。我错过了将按钮添加到横向布局:(

该应用程序会在电影播放器​​退出后更改方向,并且由于横向布局中缺少该按钮,因此我遇到了 NullPointerException。

很抱歉之前没有检查。

于 2012-07-06T09:21:44.063 回答