问题描述
- android小白问一个故障
-
android小白,做一个很简单的动作,第一个activity里面输入的内容传递到第二个activity的textview中去,但是报错如下
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference第一个activity
public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void sendMessage3(View view){ Intent intent=new Intent(this,DisplayMessageActivity.class); EditText editText = (EditText) findViewById(R.id.edit_message); String message = editText.getText().toString(); intent.putExtra(EXTRA_MESSAGE, message); startActivity(intent); } public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"; }
第二个activity
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = getIntent(); String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); TextView tv = (TextView) findViewById(R.id.textView); tv.setText(message); // Set the text view as the activity layout setContentView(R.layout.activity_display_message); }
如果我把 tv.setText(message);这句话注销掉,不赋值,第二个页面就能正常打开。
android刚上手小白。。自己研究了半天没研究出什么原因,求大神解答,非常感谢
解决方案
setContentView(R.layout.activity_display_message);放在第三行,其他下移
解决方案二:
textView没找到吧,你可以打印下tv这个值,看是不是null
解决方案三:
setContentView应该放到你实例化组件之前。
你应该这样写:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Set the text view as the activity layout
setContentView(R.layout.activity_display_message);
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText(message);
}
解决方案四:
第一次写android博客,现在还是一个小白
解决方案五:
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText(message);
// Set the text view as the activity layout
setContentView(R.layout.activity_display_message);
顺序换一下,反了,现有布局,再找组件
// Set the text view as the activity layout
setContentView(R.layout.activity_display_message);
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText(message);
解决方案六:
你应该这样写:
// Set the text view as the activity layout
setContentView(R.layout.activity_display_message);//先找到activity布局,然后在查找其中的组件
Intent intent = getIntent();
String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);
TextView tv = (TextView) findViewById(R.id.textView);
tv.setText(message);
按我上面的写法是合适的
解决方案七:
弄好了没?应该好了吧
解决方案八:
空指针异常,因为没能找到你的控件。所以不能用它进行赋值操作。setContentView这句话应该提前,先找到布局才能操作控件
解决方案九:
为什么要每点击一次按钮都要去初始化EditText控件,为什么不在onCreate方法中初始化呢?!
解决方案十:
setContetnView()应该在前面
时间: 2024-09-10 20:25:02