gpt4 book ai didi

java - 从 Activity 向 Fragment 传递数据不起作用

转载 作者:行者123 更新时间:2023-12-01 10:52:14 26 4
gpt4 key购买 nike

我一直在做一个需要个人资料页面的应用程序。登录是一个 Activity ,个人资料页面是 fragment 。每当我传递时,它总是返回 null。

这是我的 MainActivity.java

public class MainActivity extends Activity {

ConnectionClass connectionClass;
EditText edtuserid,edtpass;
Button btnlogin;
ProgressBar pbbar;

public int test2;
public String test3 = "";
String user_fname;
String user_lname;
int dept_id;
String test;
String user_email;
String user_password;
String user_username;
Bundle profileBundle;
String userid;
String password;
int userIDD;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
connectionClass = new ConnectionClass();
edtuserid = (EditText) findViewById(R.id.edtuserid);
edtpass = (EditText) findViewById(R.id.edtpass);
btnlogin = (Button) findViewById(R.id.btnlogin);
pbbar = (ProgressBar) findViewById(R.id.pbbar);
pbbar.setVisibility(View.GONE);

edtuserid.setText(test3);

btnlogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
userid = edtuserid.getText().toString();
password = edtpass.getText().toString();
DoLogin doLogin = new DoLogin();
doLogin.execute("");

}
});
}
public class DoLogin extends AsyncTask<String,String,String>
{
int b;
String z = "";
Boolean isSuccess = false;
@Override
public void onPreExecute() {
pbbar.setVisibility(View.VISIBLE);
}
@Override
public void onPostExecute(String r) {
pbbar.setVisibility(View.GONE);

if(isSuccess) {
//DITO ANG REDIRECTION
Intent base = new Intent(MainActivity.this, OtherActivity.class);
startActivity(base);
finish();

}
}
@Override
public String doInBackground(String... params) {

if(userid.trim().equals("")|| password.trim().equals(""))
z = "Please enter User Id and Password";
else
{
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = "Error in connection with SQL server";
} else {

String query = "select user_id, user_fname, user_lname, department_id, user_email, user_password, user_username from users where user_id='" + userid + "' and user_password='" + password + "'";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
if(rs.next())
{
userIDD = rs.getInt(1);

Bundle profileBundle = new Bundle();
profileBundle.putInt("userID", userIDD);


PathfinderAdd fragobj = new PathfinderAdd();
fragobj.setArguments(profileBundle);


z = "The ID is " + userIDD;

isSuccess=true;
}
else
{
z = "Invalid Credentials";
isSuccess = false;
}
}
}
catch (Exception ex)
{
isSuccess = false;
z = "Error Somewhere";
Log.e("MYAPP", "exception", ex);
}
}
return z;
}


}

public String getMyData() {

String test4 = test3;
return test4;

}



}

在 fragment 中,我检索数据为:

PathfinderAdd.java

public class PathfinderAdd extends Fragment {

ConnectionClass connectionClass;
EditText edtideaname, edtbenefit,edtobservation,edtquickwin,targetdate;
Button btnadd;
TextView targettv;
Spinner spinner1, spinner2;
ProgressBar pbbar;
String proid;
CalendarView calendar;


String realDate;
String DAY;
Date targ = null;
String finalDate;
SimpleDateFormat timeFormat;
java.sql.Date sql;
Date date2;
int userID = 0;
int user = 0;


public PathfinderAdd(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {


View rootView = inflater.inflate(R.layout.addpathfinder, container, false);


connectionClass = new ConnectionClass();
edtideaname = (EditText) rootView.findViewById(R.id.edtideaname);
edtbenefit = (EditText) rootView.findViewById(R.id.edtbenefit);
edtobservation = (EditText) rootView.findViewById(R.id.edyobservation);
edtquickwin = (EditText) rootView.findViewById(R.id.edtquickwin);
targetdate = (EditText) rootView.findViewById(R.id.target);
spinner1 = (Spinner) rootView.findViewById(R.id.spinner1);
spinner2 = (Spinner) rootView.findViewById(R.id.spinner2);
btnadd = (Button) rootView.findViewById(R.id.btnadd);
pbbar = (ProgressBar) rootView.findViewById(R.id.pbbar);
targettv = (TextView) rootView.findViewById(R.id.tvtarget);
pbbar.setVisibility(View.GONE);
calendar = (CalendarView) rootView.findViewById(R.id.calendar1);
proid = "";


//String userId = ((MainActivity)getActivity()).IDD;



MainActivity getID = new MainActivity();
String IDD = getID.getMyData();
Toast.makeText(PathfinderAdd.this.getActivity(), IDD, Toast.LENGTH_SHORT).show();

btnadd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AddPro addPro = new AddPro();

addPro.execute("");

}
});

calendar.setOnDateChangeListener(new OnDateChangeListener() {


public void onSelectedDayChange(CalendarView view, int year_date, int month_date,
int dayOfMonth) {

int day = dayOfMonth;
int month = month_date;
int year = year_date;

DAY=String.valueOf(year)+String.valueOf(month)+String.valueOf(day);





}
});






return rootView;

}


public class AddPro extends AsyncTask<String, String, String> {



String z = "";
Boolean isSuccess = false;

String observation = edtobservation.getText().toString();
String quickwin = edtquickwin.getText().toString();
String ideaname = edtideaname.getText().toString();
String benefit = edtbenefit.getText().toString();
String target_date = targetdate.getText().toString();





String process = spinner1.getSelectedItem().toString();
String benefitType = spinner2.getSelectedItem().toString();
String lol = "2015-11-28";

Integer benefit_type = spinner2.getSelectedItemPosition();
Integer idea_type = spinner1.getSelectedItemPosition();
Integer idea_id;
Integer benefit_id;

Integer pathfinder_id = 1;
Integer pathfinder_status = 9;
Integer pathfinder_prog = 0;

@Override
protected void onPreExecute() {
pbbar.setVisibility(View.VISIBLE);
}

@Override
protected void onPostExecute(String r) {
pbbar.setVisibility(View.GONE);
Toast.makeText(PathfinderAdd.this.getActivity(), r, Toast.LENGTH_SHORT).show();
if(isSuccess==true) {
edtideaname.setText(null);
edtbenefit.setText(null);
edtobservation.setText(null);
edtquickwin.setText(null);
targetdate.setText(null);
}

}

@Override
protected String doInBackground(String... params) {
if (ideaname.trim().equals("") || benefit.isEmpty() || observation.trim().equals("") || quickwin.trim().equals(""))
z = "Please fill all the fields";
else {
try {
Connection con = connectionClass.CONN();
if (con == null) {
z = "Error in connection with SQL server";
} else {

//timeFormat = new SimpleDateFormat("yyyy-MM-dd",Locale.ENGLISH);
//finalDate = timeFormat.format(targ);

//sql = new java.sql.Date(targ.getTime());

int lol=1;


double benefitInt = Double.parseDouble(benefit);
date2 = new SimpleDateFormat("yyyyMMdd", Locale.ENGLISH).parse(DAY);

String newDateString = new SimpleDateFormat("yyyy/MM/dd",Locale.ENGLISH).format(date2);

DateFormat format2 = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH);
Date date3 = format2.parse(newDateString);


String dates = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH)
.format(Calendar.getInstance().getTime());

//String date = new SimpleDateFormat("yyyy/MM/dd", Locale.ENGLISH)
//.format(calendar.getDate());


switch (idea_type)
{
case 0:
idea_id = 1;
break;
case 1:
idea_id = 2;
break;
case 2:
idea_id = 3;
break;
case 3:
idea_id = 4;
break;
case 4:
idea_id = 5;
break;
default:
idea_id = 1;
break;
}

switch(benefit_type)
{
case 0:
benefit_id = 1;
break;
case 1:
benefit_id = 2;
break;
default:
benefit_id = 1;
break;
}

String query = "insert into pathfinder (pathfinder_id,pathfinder_name,idea_id,benefit_id,pathfinder_potential_eqv,pathfinder_observation,pathfinder_quickwin,pathfinder_target_closure,pathfinder_status,pathfinder_progress,patfinder_actual_closure,pathfinder_date_raised,user_id)" +
"values ('" +pathfinder_id+ "','" +ideaname+ "','" +idea_id+ "','" +benefit_id+ "','" +benefitInt+ "','" +observation+ "','" +quickwin+ "','" +dates+ "','" +pathfinder_status+ "','" +pathfinder_prog+ "','" +dates+ "','" +dates+ "','" + user+"')";
PreparedStatement preparedStatement = con.prepareStatement(query);
preparedStatement.executeUpdate();
z = "Added Successfully";
isSuccess = true;
}
} catch (Exception ex) {
isSuccess = false;
z = "Exceptions";
Log.e("MYAPP", "exception", ex);
}
}
return z;
}

}

}

问题是每当这段代码执行时,我都会得到一个空值。我也尝试将它分配给一个方法,但它仍然返回 null。

最佳答案

您必须使用相同的对象才能进入 fragment 。我认为您使用了 fragment 的另一个对象进行事务,这就是它显示为空的原因。

它必须有点像这样

   PathfinderAdd fragobj = new PathfinderAdd();
fragobj.setArguments(profileBundle);
getSupportFragmentManager().beginTransaction().add(R.id.container , fragobj).commit();

关于java - 从 Activity 向 Fragment 传递数据不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33795272/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com