2013-03-21 135 views
0

所以,我剛開始觀看並在活動之間移動。我想我得到了我正在尋找的東西。我修復了所有的錯誤,但現在當我測試應用程序時,它崩潰了。我是android和eclipse的新手。所以我不確定發生了什麼事。這是我的MainActivity.java:測試時崩潰

 import android.os.Bundle; 
     import android.app.Activity; 
     import android.content.Intent; 
     import android.util.Log; 
     import android.view.Menu; 
     import android.view.MenuInflater; 
     import android.view.View; 
     import android.widget.Button; 
     import android.widget.EditText; 
     import android.widget.TextView; 

    public class MainActivity extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Intent intent = getIntent(); 
    String info = intent.getStringExtra("info_key"); 
    TextView text = (TextView) findViewById(R.id.nametext); 
    text.setText(info); 
} 


//opens a new activity. 
public void openAddItem (View v){ 
    Intent intent = new Intent (this, Additem.class); 
    startActivity(intent); 
     } 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

    } 

這是我的第二個活動; Additem.java:

package com.grocerylist; 

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

    public class Additem extends Activity { 

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

} 


public void additem (View v){ 
    EditText text = (EditText)findViewById(R.id.itemname); 
    String info = text.getText().toString(); 
    Intent intent = new Intent(this, MainActivity.class); 
    intent.putExtra("info_key", info); 
    startActivity(intent); 
    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.activity_additem, menu); 
    return true; 
} 

    } 

謝謝,我很積極,問題在於我放置了我的ID。

+0

發佈您的logcat。事實上,一旦你找到你的logcat,就有一個很好的機會,你可以自己修復它;) – 323go 2013-03-21 22:21:06

+0

你在哪裏調用openAdditem()方法,爲什麼你將一個視圖傳遞給它?啓動應用時哪個活動啓動?請發佈一些LogCat輸出。如果您還沒有看到LogCat,請轉到窗口 - 顯示視圖 - LogCat – Droidman 2013-03-21 22:27:49

+0

是的,它只是顯示問題出在哪裏。第28行是在我的MainActivity.java中,但我沒有看到問題:text.setText(info)。你做? @ 323go – 2013-03-21 22:30:47

回答

1

你我看到的第一個問題是在這裏

Intent intent = getIntent(); 
    String info = intent.getStringExtra("info_key"); 
    TextView text = (TextView) findViewById(R.id.nametext); 
    text.setText(info); 

沒有Intent「獲取」如果這是你的第一個Activity。當您使用Intent啓動Activity併發送extras時,會使用該選項。所以,info自然是null。當你從第二個Activity創建它時會有一些東西,但當你第一次運行你的應用程序時不會。此外,您可能需要在首先使用startActivityForResultActivity

第二,我沒有看到您在第一個Activity中撥打openAddItem()的位置。它可能是從Button,但我沒有看到任何Buttons

看起來你缺少一些關於Android框架基礎知識的重要理解。我建議你從Docs Here開始,如果你還沒有通過它們。祝你好運

此外,這

Intent intent = new Intent (this, Additem.class); 

應該是這個

Intent intent = new Intent (MainActivity.this, Additem.class); 
+0

@凱爾K做了這個幫助嗎? – codeMagic 2013-03-21 23:32:31

+0

是的,我欣賞它! @codeMagic – 2013-03-22 20:52:55

+0

@KyleK我很高興我可以幫忙!請接受正確的答案,其他有類似問題的人會覺得更容易 – codeMagic 2013-03-22 20:55:26

-2

的第一個問題我也看到已經由codeMagic提及。第二件事:如果你只是調用你的方法,在onCreate()中啓動另一個Activity,那麼你將在堆棧中獲得僞無限數量的這些Activities,並且你的應用程序將崩潰。

想想看these tutorials,它可能會幫助您開始