【问题标题】:Can't call an intent from FragmentActivity无法从 FragmentActivity 调用意图
【发布时间】:2014-01-21 19:53:07
【问题描述】:

我有我的登录屏幕,在 ViewPager 的其中一个页面上有一个登录按钮。我试图让这个按钮直接进入主要活动,因为我还没有整理好所有的服务器端。但是,当我这样做时,会出现此错误:

01-21 14:51:33.499: E/AndroidRuntime(2256): FATAL EXCEPTION: main
01-21 14:51:33.499: E/AndroidRuntime(2256): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.fbla.sap/com.fbla.sap.LoginActivity}: java.lang.NullPointerException
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2304)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2358)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.ActivityThread.access$700(ActivityThread.java:165)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1326)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.os.Handler.dispatchMessage(Handler.java:99)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.os.Looper.loop(Looper.java:137)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.ActivityThread.main(ActivityThread.java:5450)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at java.lang.reflect.Method.invokeNative(Native Method)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at java.lang.reflect.Method.invoke(Method.java:525)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at dalvik.system.NativeStart.main(Native Method)
01-21 14:51:33.499: E/AndroidRuntime(2256): Caused by: java.lang.NullPointerException
01-21 14:51:33.499: E/AndroidRuntime(2256):     at com.fbla.sap.LoginActivity.onCreate(LoginActivity.java:23)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.Activity.performCreate(Activity.java:5369)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104)
01-21 14:51:33.499: E/AndroidRuntime(2256):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2267)
01-21 14:51:33.499: E/AndroidRuntime(2256):     ... 11 more

这是我的 LoginActivity.java 的源代码:

package com.fbla.sap;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.support.v4.view.ViewPager;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.view.Menu;
import android.view.View;
import android.widget.Button;

public class LoginActivity extends FragmentActivity {

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);

        ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
        viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));

        Button loginBtn = (Button) findViewById(R.id.loginBtn);
        loginBtn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(LoginActivity.this, InterfaceActivity.class);
                startActivity(intent);
            }

        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.login, menu);
        return true;
    }

}

【问题讨论】:

  • 你确定 res/layout/activity_login.xml 包含

标签: android button android-intent android-activity


【解决方案1】:
Button loginBtn = (Button) findViewById(R.id.loginBtn);

loginBtn 可能为空。

【讨论】:

  • 可能就是这样。我在我的一个片段中有按钮,而不是在这个片段创建的视图中。有关如何解决此问题的任何选项?
  • 既然在你的fragment中,你应该把这个clicklistener部分放在你的fragment里面,当你的fragment在前台被点击时,它会打开MainActivity。
  • 我想通了。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 2015-07-23
  • 2014-11-11
相关资源
最近更新 更多