为啥意图使我的应用程序崩溃?

Posted

技术标签:

【中文标题】为啥意图使我的应用程序崩溃?【英文标题】:Why intent makes my application crashed?为什么意图使我的应用程序崩溃? 【发布时间】:2015-12-26 00:16:53 【问题描述】:

我只想问你为什么使用intent会导致我的系统崩溃?我之前使用过相同的代码并且它可以工作,然后当我再次使用它时它不会。大家觉得有什么问题吗?

清单

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".Login"
        android:label="@string/title_activity_login" >
    </activity>
</application>

主活动

public class MainActivity extends ActionBarActivity 

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


public void okay(View view) 
    Intent i = new Intent(this, Login.class);
    startActivity(i);

第二个活动(如果我点击了主要活动,我只想弹出这个活动)

public class Login extends ActionBarActivity 
ListView listView;
ArrayAdapter<String> adapter;
String[] grocery_categories = "Beverages", "Bakery", "Canned Goods", "Condiments", "Dairy", "Snacks", "Frozen Foods",
                                "Meat", "Produce", "Cleaners", "Paper Goods", "Personal Care", "Others";

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    listView = (ListView) findViewById(R.id.list_view);
    adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, grocery_categories);
    listView.setAdapter(adapter);
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
        @Override
        public void onItemClick(AdapterView<?> listView, View view, int position, long id) 
            String grocery = (String) listView.getAdapter().getItem(position);
            Intent intent = new Intent(listView.getContext(),Login.class);
            listView.getContext().startActivity(intent);
            //or create other intents here
        
    );


MainActivity 的 XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_
android:layout_  tools:context=".MainActivity"
android:id="@+id/rl_main_activity">

<ImageView
    android:layout_
    android:layout_
    android:id="@+id/mobile_grocery_bckgrnd"
    android:src="@drawable/mobile_grocery"
    android:scaleType="centerCrop"
    />

<TextView
    android:layout_
    android:layout_
    android:text="MOBILE GROCERY"
    android:id="@+id/mobile_grocery_app"
    android:textSize="45dp"
    android:textColor="#000000"
    android:gravity="center"

    android:textStyle="bold|italic"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<TextView
    android:layout_
    android:layout_
    android:text="Application"
    android:id="@+id/application"
    android:textColor="#000000"
    android:textSize="25dp"
    android:layout_below="@+id/mobile_grocery_app"
    android:layout_centerHorizontal="true" />

<EditText
    android:layout_
    android:layout_
    android:id="@+id/username"
    android:layout_alignParentBottom="true"
    android:layout_alignRight="@+id/application"
    android:layout_alignEnd="@+id/application"
    android:layout_marginBottom="135dp"
    android:hint="Username"
    android:textColorHint="#000000"
    />

<EditText
    android:layout_
    android:layout_
    android:id="@+id/password"
    android:layout_alignTop="@+id/username"
    android:layout_alignRight="@+id/username"
    android:layout_alignEnd="@+id/username"
    android:layout_marginTop="52dp"
    android:hint="Password"
    android:textColorHint="#000000"
    android:password="true" />

<Button
    style="?android:attr/buttonStyleSmall"
    android:layout_
    android:layout_
    android:text="OK"
    android:id="@+id/ok"
    android:layout_below="@+id/password"
    android:layout_alignLeft="@+id/application"
    android:layout_alignStart="@+id/application"
    android:onClick="okay" />

登录活动的XML(第二个活动)

<ImageView
    android:layout_
    android:layout_
    android:id="@+id/login_bckgrnd"
    android:src="@drawable/login_bckgrnd"
    android:scaleType="centerCrop"
    />

<ListView
    android:id="@+id/list_view"
    android:layout_
    android:layout_>



</ListView>

清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.admin.mobilegroceryapp" >

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name=".Login"
            android:label="@string/title_activity_login" >
        </activity>
    </application>

</manifest>

日志猫

  .085    2019-2087/? I/InputDispatcher﹕ Delivering touch to current input target: action: 0x0
09-29 01:54:28.085    2019-2087/? I/InputDispatcher﹕ Delivering touch to current input target: action: 0x0
09-29 01:54:28.085    2019-2087/? I/InputDispatcher﹕ Delivering touch to current input target: action: 0x0
09-29 01:54:28.085    2019-2087/? I/InputDispatcher﹕ Delivering touch to current input target: action: 0x0
09-29 01:54:28.085    2019-2087/? I/InputDispatcher﹕ Delivering touch to current input target: action: 0x0
09-29 01:54:28.190    2019-2088/? I/InputReader﹕ Touch event's action is 0x1 (deviceType=0) [pCnt=1, s=]
09-29 01:54:28.285  30351-30351/? I/dalvikvm﹕ Could not find method android.graphics.Bitmap.getAllocationByteCount, referenced from method com.facebook.imagepipeline.a.d.a.a
09-29 01:54:28.285  30351-30351/? W/dalvikvm﹕ VFY: unable to resolve virtual method 625: Landroid/graphics/Bitmap;.getAllocationByteCount ()I
09-29 01:54:28.285  30351-30351/? D/dalvikvm﹕ VFY: replacing opcode 0x6e at 0x0006
09-29 01:54:28.355  30482-30482/? D/dalvikvm﹕ WAIT_FOR_CONCURRENT_GC blocked 0ms
09-29 01:54:28.355    2019-2074/? D/BatteryService﹕ update start
09-29 01:54:28.360    2019-2079/? D/KeyguardViewMediator﹕ setHidden false
09-29 01:54:28.360    1732-1732/? I/SurfaceFlinger﹕ id=13169 Removed TcreenSaver idx=4 MapSz=10

希望一些专业人士帮助我解决我的问题。有人说这很简单,但我无法解决先生。

【问题讨论】:

你能用堆栈跟踪更新你的帖子吗? 什么是堆栈跟踪先生?我是初学者。你是说 logcat? @Lawrence: Why intent makes my application crashed? 哪个意图? 是的,在您的 logcat 中,只要有未捕获的异常或记录的异常,它就会告诉您错误是什么、发生的位置,有时还会提出修复它的建议。尝试在你的 logcat 中搜索“FATAL EXCEPTION” @ρяσѕρєяK 先生,看看我的 MainActivity!我试图意图登录类,但它崩溃了。顺便说一下先生!我正在尝试为我的论文开发一个移动杂货应用程序 【参考方案1】:

您需要将 Login Activity 添加到您的AndroidManifest.xml,以便 android 操作系统可以找到 Intent 所引用的 Activity。

<activity
android:name=".Activities.Login"
android:label="Login" />

【讨论】:

android:name=".Activities.Login" 会有什么帮助?没有这样的“.Activities.Login”活动,只有登录活动 @Lawrence 没有包含足够的信息(如包名称),无法提供 100% 准确的答案。 .Activities.Login 是对活动类名称的最佳猜测(如果它存储在名为 Activities 的主 java 文件夹的子包中)。它很可能是 com.lawrence.activities.Login 之类的东西,但同样,如果没有看到实际的包名,就不可能说出来。 另外,使用.&lt;ACTIVITY NAME&gt; 语法快捷方式为包的长名称。【参考方案2】:

您确实需要向我们展示您的堆栈跟踪,以获得任何有用的反馈。我怀疑您没有在 AndroidManifest.xml 中正确声明登录活动。

LogCat 将包含错误堆栈跟踪。您很可能会看到一大块红色文本,表示我们感兴趣的部分。下面是我的一个堆栈跟踪示例。希望它可以帮助您找到它。

java.lang.RuntimeException: Unable to start activity ComponentInfopackage.name.ThingDetailActivity: java.lang.NullPointerException: Attempt to invoke virtual method 'long com.package.api.model.Thing.getId()' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2325) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2387) at android.app.ActivityThread.access$800(ActivityThread.java:151) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:135) at android.app.ActivityThread.main(ActivityThread.java:5254) at java.lang.reflect.Method.invoke(Method.java) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

【讨论】:

以上是关于为啥意图使我的应用程序崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 unwind segue 会使我的应用程序崩溃?

为啥我的 ListView 使我的应用程序崩溃而不是列出我的条目?

为啥大型本地数组会使我的程序崩溃,而全局数组却不会? [复制]

为啥 authorizeview roles="admin" 使我的应用程序崩溃?

为啥 glGetProgramiv GL_ACTIVE_UNIFORMS 偶尔会返回垃圾并使我的程序崩溃?

为啥在 C 中使用错误的格式说明符会使我的程序在 Windows 7 上崩溃?