所以,我刚开始观看并在活动之间移动。我以为我得到了我想要的东西。我修复了所有错误,但现在当我测试应用程序时它会崩溃。我是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;
}
}
谢谢,我很肯定问题在于我放置了我的身份。
答案 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
其次,我看不到您在第一个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,它可能会帮助您开始