【问题标题】:Android MyFirstApp - Unfortunately application stopped workingAndroid MyFirstApp - 不幸的是应用程序停止工作
【发布时间】:2014-12-05 06:53:51
【问题描述】:

我按照http://developer.android.com/training/basics/firstapp/starting-activity.html#AddToManifest中提到的技巧在android中设计了第一个应用程序

当我输入内容并按下 Send 按钮时,它会显示

不幸的是应用停止工作

对应的日志如下

10-10 12:10:04.029: D/dalvikvm(550): Not late-enabling CheckJNI (already on)
10-10 12:10:06.549: D/gralloc_goldfish(550): Emulator without GPU emulation detected.
10-10 12:10:26.169: D/AndroidRuntime(550): Shutting down VM
10-10 12:10:26.169: W/dalvikvm(550): threadid=1: thread exiting with uncaught exception (group=0x409961f8)
10-10 12:10:26.229: E/AndroidRuntime(550): FATAL EXCEPTION: main
10-10 12:10:26.229: E/AndroidRuntime(550): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.DisplayMessageActivity}: java.lang.IllegalArgumentException: No view found for id 0x7f080000 for fragment PlaceholderFragment{4108e7c8 #0 id=0x7f080000}
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.ActivityThread.access$600(ActivityThread.java:122)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.os.Looper.loop(Looper.java:137)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.ActivityThread.main(ActivityThread.java:4340)
10-10 12:10:26.229: E/AndroidRuntime(550):  at java.lang.reflect.Method.invokeNative(Native Method)
10-10 12:10:26.229: E/AndroidRuntime(550):  at java.lang.reflect.Method.invoke(Method.java:511)
10-10 12:10:26.229: E/AndroidRuntime(550):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-10 12:10:26.229: E/AndroidRuntime(550):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-10 12:10:26.229: E/AndroidRuntime(550):  at dalvik.system.NativeStart.main(Native Method)
10-10 12:10:26.229: E/AndroidRuntime(550): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f080000 for fragment PlaceholderFragment{4108e7c8 #0 id=0x7f080000}
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:789)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:998)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.BackStackRecord.run(BackStackRecord.java:622)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1330)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.Activity.performStart(Activity.java:4474)
10-10 12:10:26.229: E/AndroidRuntime(550):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1928)
10-10 12:10:26.229: E/AndroidRuntime(550):  ... 11 more
10-10 12:10:31.099: I/Process(550): Sending signal. PID: 550 SIG: 9

代码:

public void sendMessage(View view) { 
   Intent intent=new Intent(this, DisplayMessageActivity.class); 
   EditText editText=(EditText)findViewById(R.id.edit_message); 
   String message=editText.toString().toString(); 
   intent.putExtra(EXTRA_MESSAGE, message); 
   startActivity(intent); 
}

DisplayMessageActivity:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.container, new PlaceholderFragment()).commit();
    }
    Intent intent=getIntent();
    String message=intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
    
    TextView textView=new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);
    
    setContentView(textView);
}

有什么问题?谁能给我一个关于出了什么问题的建议。

【问题讨论】:

  • 至少显示一些代码。
  • 请只写你在发送按钮点击中写的代码,这样人们就可以理解你写错了什么,并且不需要在问题上显示这么多错误堆栈或复制你的活动类:)
  • 这是发送按钮的代码 public void sendMessage(View view){ Intent intent=new Intent(this, DisplayMessageActivity.class); EditText editText=(EditText)findViewById(R.id.edit_message);字符串消息=editText.toString().toString();意图.putExtra(EXTRA_MESSAGE,消息);开始活动(意图); }
  • 问题与 Fragment 相关。系统正在activity_display_message 中寻找R.id.container,但它可能不存在。如果您没有明确使用 Fragment,请注释掉 if (savedInstanceState == null) { getFragmentManager().beginTransaction() .add(R.id.container, new PlaceholderFragment()).commit(); }

标签: java android


【解决方案1】:

我查看了您在此处粘贴的链接,我认为这应该可以解决您的问题:

在您的activity_display_message.xml 中,您必须添加以下代码

android:id="@+id/activity_display_message

【讨论】:

    【解决方案2】:

    在 Android SDK Tools R15 中,您可以启用 GPU 仿真。

    您需要创建一个新的模拟器虚拟设备,并在硬件属性中将 GPU 模拟设置为 true。

    现在可以通过 Emulator Creation 选项直接启用 GPU。转到窗口 --> Android 虚拟设备管理器 --> 新建。现在记得勾选Use GPU host,然后您将拥有一个运行速度非常快且启用了 GPU 的模拟器。

    【讨论】:

    • 目前我已将 RAM 大小指定为 768MB,将堆指定为 64。我尝试将 RAM 大小更改为 1024MB,但它仍然给出相同的错误和日志。我应该给堆大小多少??
    • 问题与内存无关
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 2018-01-06
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多