2012-05-14 81 views
1
导致崩溃

所以我刚开始学习开发Android应用程序,我有一个编程背景(Python的为主),所以我有点知道我在做什么。我在使用startActivity()时遇到了问题。我注释掉的代码搞清楚究竟在何处的错误被抛出,并且是正确的发生,因为startActivity()遇到。我得到的错误是从模拟器,它仅仅是一个弹出窗口,上面写着:“不幸的是,测试已经停止。” (测试是我的程序名称),我点击我的按钮后。我的代码是这样的startActivity()在Android的

package com.test.test; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 

public class TestActivity extends Activity { 

public final static String EXTRA_MESSAGE = "com.test.test.MESSAGE"; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public class DisplayMessageActivity extends Activity { 
     @Override 
     public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     } 
    } 

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

} 

现在我知道,不会做任何事情,但它为什么崩溃? 我的XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" > 

<EditText android:id="@+id/textBox1" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:hint="@string/textBox1Hint" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button1" 
    android:onClick="sendMessage" /> 

</LinearLayout> 

我的清单:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.test.test" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="15" /> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".TestActivity" 
     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=".DisplayMessageActivity" > 
    </activity> 

</application> 
</manifest> 

我看到了,因为他们没有在清单中声明他们的活动很多其他人被有这个问题,但我想我有做得很好。任何帮助将非常感激。

+0

TestActivity代码在哪里? –

+1

请提供具有相同错误的日志猫.... –

+1

我认为不需要使用意图..你只是留在你的活动中,也没有声明目标活动。 –

回答

0

使用单独的文件中测试活动DisplayMessageActivity类。在给定的代码中,您没有指定使用setContentViewDisplayMessageActivity活动的布局。

1

我想问题是您在DisplayMessageActivity上并开始相同的活动。 你需要做的是开始测试活动并从意图调用DisplayMessageActivity。

2

一个可能的问题是,

EditText editText = (EditText) findViewById(R.id.textBox1); 

回报null因为你不为你的活动(与setContentView

如果您editetext包括在view(传递给sendMessage)位置设置过的布局,你可以找到它

EditText editText = (EditText) view.findViewById(R.id.textBox1); 
+0

试过修改它,但它没有解决问题,但谢谢。 –

0

问题是这样的,
您在清单中声明的​​主类是测试活动:

<activity 
    android:name=".TestActivity" 
    android:label="@string/app_name" > 

,但你想开始DisplayMessageActivity, 所以,这个更改为以下:

public class TestActivity extends Activity { 
@Override 
+0

对不起,我相信我没有发布我的整个代码让很多人感到困惑。这或我对我被告知的事情感到困惑。我刚刚在最初的问题中更新了代码,如果你可以再看一下。 –

0

我不明白什么你实际上正试图通过再次开始相同的活动来实现。试试这个,

public class DisplayMessageActivity extends Activity { 
    private String message ; 
     @Override 
     public void onCreate(Bundle savedInstanceState){ 
      super.onCreate(savedInstanceState); 
setLayout(R.layout.<name of the xml file>); // change the name if it is not in layout folder 
      EditText editText = (EditText) findViewById(R.id.textBox1); 
      String message = editText.getText().toString(); 
      Button submitBtn = (Button) findViewById(R.id.button1); 
      submitBtn.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
        Toast toast = Toast.makeText(DisplayMessageActivity.this, 
           message, 
           Toast.LENGTH_SHORT); 
         toast.show(); 
    }}); 
     } 
    } 

上面的代码只是显示字符串,这只是一个示例代码...希望帮助!!!

编辑 若要运行此代码,你还必须添加ID标签到您的按钮标签有值Button1的XML文件中..

0

Actullay已创建活动中的活动。这是没有太大的PREF,可以,但如果想坚持与那么你必须在Android更改:名称=“DisplayMessageActivity。”到

+0

可能在android:name =“。TestActivity $ DisplayMessageActivity”到 –