2012-05-14 55 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」到 –