![](/img/trans.png)
[英]Android NullPointerException for findViewById on spinner
[英]Android NullPointerException when findViewById
當我運行我的應用程序時,我在log-cat中收到此錯誤:
Caused by: java.lang.NullPointerException
at com.myfirstapp.myfirstapp.MainActivity.onCreate(MainActivity.java:52)
at android.app.Activity.performCreate(Activity.java:5312)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1111)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2552)
... 11 more
這是第52行:
String message = editTextInput.getText().toString();
到目前為止,我已經知道NPE必須在我定義EditText(或任何視圖)時:
EditText editText = (EditText) findViewById(R.id.input_text);
但是,當我定義EditText時,我沒有獲得NPE: findViewById()
如下所示:
TextView desc = new TextView(this);
這是整個onCreate()
方法:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
EditText editText = (EditText) findViewById(R.id.input_text);
Button submit = (Button) findViewById(R.id.submit);
LinearLayout layout = (LinearLayout) findViewById(R.id.layout_main);
Intent intent = new Intent(this, testActivity.class);
final TextView desc = new TextView(this);
final TextView title = new TextView(this);
String message = editText.getText().toString();
submit.setVisibility(View.VISIBLE);
submit.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
editText.setVisibility(View.GONE);}});
desc.setTextSize(20);
desc.setText(message);
desc.setGravity(Gravity.LEFT | Gravity.TOP);
desc.setPadding(5, 5, 5, 5);
desc.setTextColor(getResources().getColor(R.color.black));
title.setTextSize(10);
title.setText(R.string.title_activity_dictionary);
title.setGravity(Gravity.LEFT | Gravity.TOP);
title.setPadding(5, 5, 5, 5);
title.setTextColor(getResources().getColor(R.color.black));
layout.addView(desc);
layout.addView(title);
}
我沒有得到的是為什么在我清楚地定義View時會出現NPE?
確保您在findviewbyid方法中傳遞了正確的ID,該方法在您的布局中可用。
除此以外。 只需清理並構建項目。
更改
String message = editTextInput.getText().toString();
至
String message = editText.getText().toString();
這是因為findViewById()在activity_main布局中搜索,而按鈕位於片段的布局fragment_main中。
在片段的onCreateView()方法中移動該段代碼:
//...
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
Button buttonClick = (Button)rootView.findViewById(R.id.button);
buttonClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onButtonClick((Button) view);
}
});
請注意,現在您可以通過rootView視圖訪問它:
Button buttonClick = (Button)rootView.findViewById(R.id.button);
否則你會再次得到NullPointerException。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.