测试时崩溃

时间:2013-03-21 22:18:47

标签: java android

所以,我刚开始观看并在活动之间移动。我以为我得到了我想要的东西。我修复了所有错误,但现在当我测试应用程序时它会崩溃。我是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;
}

    }

谢谢,我很肯定问题在于我放置了我的身份。

2 个答案:

答案 0 :(得分:1)

我看到的第一个问题就在这里

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

如果这是您的第一个Intent,则没有Activity来“获取”。当您使用Activity启动Intent并发送extras时,就会使用此功能。因此,info自然是null。当您从第二个Activity创建它时会有一些东西,但是当您第一次运行您的应用时则不会。此外,您可能需要在第一个Activity

中使用startActivityForResult进行检查

其次,我看不到您在第一个openAddItem()中拨打Activity的位置。它可能来自Button,但我看不到任何Buttons

看起来您缺少对Android框架基础知识的一些重要理解。如果你还没有通过它们,我建议你从Docs Here开始。祝你好运

另外,这个

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

应该是这个

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

答案 1 :(得分:-2)

我发现的第一个问题已经由 codeMagic 提及。

第二件事:如果您只是调用在Activity中启动另一个onCreate()的方法,您将在堆栈和应用中获得伪无限数量的Activities会崩溃。

考虑观看these tutorials,它可能会帮助您开始