[英]How to solve the '.MainActivity.<init>(MainActivity.java:16)' error?
EditText
object is not created, why? 未创建EditText
对象,为什么?
EditText editText=(EditText)findViewById(R.id.edittext);
This is for an App that extends AsyncTask
class. 这是用于扩展AsyncTask
类的App。 fetchingData
is a class that extens AsyncTask class.But it gives error on creating object of EditText. fetchingData
是扩展AsyncTask类的类,但是在创建EditText对象时会出错。
package com.example.zafar.omdb_7;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
String string;
Button button;
public static TextView data;
//
private EditText editText = findViewById ( R.id.edittext );
//
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data=findViewById(R.id.fetched_data);
button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
//
@Override
public void onClick(View v) {
// string = editText.getText ().toString ();
fetchingData process= new fetchingData();
process.execute();
}
});
}
}
Your code should be something like this: 您的代码应如下所示:
package com.example.zafar.omdb_7;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
String string;
Button button;
public static TextView data;
//
private EditText editText;
//
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
data=findViewById(R.id.fetched_data);
editText = findViewById ( R.id.edittext );
button=findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
//
@Override
public void onClick(View v) {
// string = editText.getText ().toString ();
fetchingData process= new fetchingData();
process.execute();
}
});
}
}
You won't find the view before you set it on the activity. 在活动上设置视图之前,您将找不到它。 I hope this helps. 我希望这有帮助。
You can't use the following: 您不能使用以下内容:
public class MainActivity extends AppCompatActivity {
// This won't work!
private EditText editText = findViewById ( R.id.edittext );
@Override
protected void onCreate(Bundle savedInstanceState) {
...
}
}
Because you can't call the findViewById
before you set the Activity layout with setContentView()
. 因为在使用setContentView()
设置Activity布局之前无法调用findViewById
。 It means that you can't find a view if you didn't have the layout yet. 这意味着如果您还没有布局,则无法找到视图。
So, edit your code to something like this: 因此,将您的代码编辑为如下所示:
public class MainActivity extends AppCompatActivity {
...
private EditText mEdtText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Now you have the layout, you can find the view
mEdtText = findViewById(R.id.edittext);
...
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.