RuntimeException(ComponentInfo)Nullpointerexception

时间:2012-07-06 07:37:19

标签: android

我想找出问题所在。 我知道问题是NullPointerException。但我不知道 这是为什么。

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

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

methodtest(parm1);

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

这是我的异常logcat。

  

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):at net.apptest.app1.activities.MainActivity.onCreate(MainActivity.java:309)
  07-06 08:09:03.176:E / AndroidRuntime(2385):at 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):at net.apptest.app1.abstivities.AbstractHttpActivity.registerOnClickListener(AbstractHttpActivity.java:262)
  07-06 08:17:38.779:E / AndroidRuntime(2699):at net.apptest.app1.activities.MainActivity.onCreate(MainActivity.java:309)
  07-06 08:17:38.779:E / AndroidRuntime(2699):at 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 =(按钮)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;
    }

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

1 个答案:

答案 0 :(得分:0)

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

应用程序在电影放映器退出后更改方向,因为横向布局中缺少按钮,我有NullPointerException。

很抱歉之前没有检查过。