我有两个屏幕。
第一个屏幕:我有一个添加按钮和Listview
。首先,当我点击添加按钮时,它将进入第二个屏幕。
详细信息屏幕:我正在添加员工详细信息,例如姓名,公司名称,性别,Exp,工作指定。输入详细信息后,单击保存按钮。我将这些细节存储在数组列表中。
错误:类型Details中的方法setGen(String)不适用于参数(int)
MainActivity.class
public class MainActivity extends ActionBarActivity {
ImageView addImage;
ListView listView;
// creating ArrayList
ArrayList<Details> listdetails = new ArrayList<Details>();
// creating ArrayAdapter
ArrayAdapter<Details> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
//
addImage = (ImageView) findViewById(R.id.addImage);
addImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getApplicationContext(),
DetailsScreen.class);
startActivity(i);
finish();
}
});
if (listdetails != null) {
// ArrayList<Details> listdetails=DetailsScreen.saveDetails();
adapter = new ArrayAdapter<Details>(this,
R.layout.activity_listview, listdetails);
listView.setAdapter(adapter);
Log.d("Details", "Details screen" + listdetails);
//
}
}
MyAdapter.class
private class MyAdapter extends ArrayAdapter<Details>
{
Context context;
public MyAdapter(Context context, int resource, List<Details> list1) {
super(context, resource, list1);
// TODO Auto-generated constructor stub
this.context=context;
}
private class ViewHolder {
TextView listName, listCmpny, listDisig;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
Details detail=getItem(position);
LayoutInflater inflator = (LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
if (convertView == null) {
convertView = inflator.inflate(R.layout.activity_listview, null);
holder=new ViewHolder();
holder.listName = (TextView) findViewById(R.id.listName);
holder.listCmpny = (TextView) findViewById(R.id.listCmpny);
holder.listDisig = (TextView) findViewById(R.id.listDesignation);
convertView.setTag(holder);
}
else
holder = (ViewHolder) convertView.getTag();
return convertView;
}
}
DetailsScreen.class
public class DetailsScreen extends ActionBarActivity implements OnClickListener {
static EditText name;
static EditText cmpny;
static EditText disig;
static EditText age;
static EditText exp;
Details details;
int sel;
Button save;
static RadioGroup radioGroup;
static RadioButton btnMale;
static RadioButton btnFemale;
static ArrayList<Details> Arraydetails ;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-g*emphasized text*enerated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
//
// Getting The Details From xml
name = (EditText) findViewById(R.id.editName);
cmpny = (EditText) findViewById(R.id.editCmpny);
disig = (EditText) findViewById(R.id.editDisignation);
age = (EditText) findViewById(R.id.editAge);
exp = (EditText) findViewById(R.id.editExp);
btnFemale = (RadioButton) findViewById(R.id.female);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
btnMale = (RadioButton) findViewById(sel);
save = (Button) findViewById(R.id.save);
save.setOnClickListener(this);
}
public static ArrayList<Details> saveDetails() {
// TODO Auto-generated method stub
Arraydetails = new ArrayList<Details>();
Details details = new Details();
details.setname(name.getText().toString());
Arraydetails.add(details);
details.setcmpny(cmpny.getText().toString());
Arraydetails.add(details);
details.setDisig(disig.getText().toString());
Arraydetails.add(details);
details.setAge(age.getText().toString());
Arraydetails.add(details);
details.setExp(exp.getText().toString());
Arraydetails.add(details);
int sel = radioGroup.getCheckedRadioButtonId();
details.setGen(btnMale.getText().toString());
Arraydetails.add(details);
Log.d("Details", "Details screen 1" + details.getname().toString());
Log.d("Details", "Details screen 2" + Arraydetails.size());
return Arraydetails;
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
saveDetails();
// saveNonStatic();
Intent i = new Intent(getApplicationContext(), MainActivity.class);
Toast.makeText(getApplicationContext(), "Details added " + details.toString(),
Toast.LENGTH_LONG).show();
// i.putStringArrayListExtra("Array", details);
startActivity(i);
finish();
}
Details.class
public class Details {
private String name;
private String cmpny;
private String exp;
private String disig;
private String age;
private String gen;
public String getname() {
return name;
}
public String getExp() {
return exp;
}
public void setExp(String exp) {
this.exp = exp;
}
public String getDisig() {
return disig;
}
public void setDisig(String disig) {
this.disig = disig;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getGen() {
return gen;
}
public void setGen(String gen) {
this.gen = gen;
}
public void setname(String name) {
this.name = name;
}
public String getcmpny() {
return cmpny;
}
public void setcmpny(String cmpny) {
this.cmpny = cmpny;
}
}
Logcat:
04-08 02:30:12.454: E/AndroidRuntime(1112): FATAL EXCEPTION: main
04-08 02:30:12.454: E/AndroidRuntime(1112): Process: com.example.detailswithsave, PID: 1112
04-08 02:30:12.454: E/AndroidRuntime(1112): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.detailswithsave/com.example.detailswithsave.MainActivity}: java.lang.NullPointerException
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.ActivityThread.access$800(ActivityThread.java:135)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.os.Handler.dispatchMessage(Handler.java:102)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.os.Looper.loop(Looper.java:136)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.ActivityThread.main(ActivityThread.java:5017)
04-08 02:30:12.454: E/AndroidRuntime(1112): at java.lang.reflect.Method.invokeNative(Native Method)
04-08 02:30:12.454: E/AndroidRuntime(1112): at java.lang.reflect.Method.invoke(Method.java:515)
04-08 02:30:12.454: E/AndroidRuntime(1112): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
04-08 02:30:12.454: E/AndroidRuntime(1112): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
04-08 02:30:12.454: E/AndroidRuntime(1112): at dalvik.system.NativeStart.main(Native Method)
04-08 02:30:12.454: E/AndroidRuntime(1112): Caused by: java.lang.NullPointerException
04-08 02:30:12.454: E/AndroidRuntime(1112): at com.example.detailswithsave.DetailsScreen.saveDetails(DetailsScreen.java:69)
04-08 02:30:12.454: E/AndroidRuntime(1112): at com.example.detailswithsave.MainActivity.onCreate(MainActivity.java:55)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.Activity.performCreate(Activity.java:5231)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
04-08 02:30:12.454: E/AndroidRuntime(1112): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
04-08 02:30:12.454: E/AndroidRuntime(1112): ... 11 more
答案 0 :(得分:1)
将您调用detail对象的setter的代码部分更改为以下代码:
Details details = new Details();
details.setname(name.getText().toString());
details.setcmpny(cmpny.getText().toString());
details.setDisig(disig.getText().toString());
details.setAge(age.getText().toString());
details.setExp(exp.getText().toString());
int sel = radioGroup.getCheckedRadioButtonId();
btnMale = (RadioButton) findViewById(sel);
String gen = btnMale.getText().toString();
details.setGen(gen);
Arraydetails.add(details);