我是android编程的新手,我的主要活动中有两个按钮,使用第一个按钮我要激活我的第二个活动,我在第一个活动中输入了一个文本,并且我只想要第二个按钮激活第二个活动,当我点击第一个按钮应用程序正常工作,但当我点击第二个按钮我的应用程序崩溃!有什么问题 ? 这是我的主要活动代码:
public class Main extends ActionBarActivity implements OnClickListener {
EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button1);
et = (EditText) findViewById(R.id.editText1);
Button b1 = (Button) findViewById(R.id.button2);
b.setOnClickListener(this);
b1.setOnClickListener(this);
}
@Override
public void onClick(View arg0) {
if (arg0.getId() == R.id.button1) {
Intent intent = new Intent(Main.this, secondj.class);
intent.putExtra("import", et.getText().toString());
startActivity(intent);
}
if (arg0.getId() == R.id.button2) {
Intent intent1 = new Intent(Main.this, secondj.class);
startActivity(intent1);
}
}}
由于
答案 0 :(得分:0)
在您的代码中
if (arg0.getId() == R.id.button1) {
Intent intent = new Intent(Main.this, secondj.class);
intent.putExtra("import", et.getText().toString());
startActivity(intent);
}
if (arg0.getId() == R.id.button2) {
Intent intent1 = new Intent(Main.this, secondj.class);
startActivity(intent1);
}
如您所述,点击第一个按钮有效,但点击第二个按钮时崩溃。然后方法调用getIntent().getBundle()
只有一次机会在NULL
中返回secondj.onCreate()
。
您可以针对此案例查看NULL
。
答案 1 :(得分:0)
应用程序由于NullPointerException而崩溃。
原因:点击按钮2 时,您没有提供任何Intent.putExtras,因此当您尝试访问时 第二个活动 表示 getIntent .getExtras(“import”)返回null
if (arg0.getId() == R.id.button1) {
Intent intent = new Intent(Main.this, secondj.class);
Bundle bundleObj = new Bundle();
bundleObj.putInt("flag", 1);
bundleObj.putString("import", et.getText().toString());
intent.putExtras(bundleObj);
startActivity(intent);
}
if (arg0.getId() == R.id.button2) {
Intent intent1 = new Intent(Main.this, secondj.class);
Bundle bundleObj = new Bundle();
bundleObj.putInt("flag", 1);
intent1.putExtras(bundleObj);
startActivity(intent1);
}
在secondj.class中,使用此代码从按钮2点击按钮1。
Intent intentObj = getIntent();
Bundle bundleFromIntent = intentObj.getExtras();
int checkValue = bundleFromIntent.getInt("flag");
if(checkValue == 1)
{
String textFromFirstActivity = bundleFromIntent.getString("import");
}