2013-03-21 124 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,它可能会帮助您开始