为啥意图使我的应用程序崩溃?
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
之类的东西,但同样,如果没有看到实际的包名,就不可能说出来。
另外,使用.<ACTIVITY NAME>
语法快捷方式为包的长名称。【参考方案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)
【讨论】:
以上是关于为啥意图使我的应用程序崩溃?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 ListView 使我的应用程序崩溃而不是列出我的条目?
为啥大型本地数组会使我的程序崩溃,而全局数组却不会? [复制]
为啥 authorizeview roles="admin" 使我的应用程序崩溃?