做毕设过程中遇到一些有关AS的问题,一边搜索一边尝试,解决了其中一部分,在此做一个记录。
知识比较琐碎,并且仅以能够实现功能为准,所以并非是最优解。
1.Activity之间的传值(包括fragment与Activity之间)
这里以一个功能为例子,功能要求是点击列表中的某一项,将数据记录下来并传递到下一个页面的EditText中显示。
点击列表中的一项,将列表的数据记录下来
TextView textView = (TextView) view;//定义
String bigTypeName = (String) textView.getText();//取值
在传出数据的页面记录数据,要注意bundle.putString要根据类型改变,这里值类型为String所以为putString。
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Bundle bundle = new Bundle();//利用Bundle传值
bundle.putString("bigTypeName",bigTypeName);//记录名字为bigTypeName,数据是上面获取的
Intent intent = new Intent(getActivity(), TypeAddActivity.class);//页面跳转
intent.putExtras(bundle);//带数据一起跳转
startActivity(intent);
}
在传入数据的页面获取数据,
Intent intent = getIntent();
String bigTypeName = intent.getStringExtra("bigTypeName");//与传出时设置名字对应
2.给EditText获取默认值,并进行是否为空判断
定义EditText
EditText bigTypeNameText = (EditText)findViewById(R.id.text_bigType_add) ;
使用
bigTypeNameText.setText(bigTypeName);
为EditText设置默认值
判空操作使用
TextUtils.isEmpty(bigTypeText.getText())
完整代码:
package com.example.studenttimemanage;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
public class TypeAddActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_type_add);
Intent intent = getIntent();
String bigTypeName = intent.getStringExtra("bigTypeName");
EditText smallTypeText = (EditText) findViewById(R.id.text_smallType_add);
EditText bigTypeNameText = (EditText)findViewById(R.id.text_bigType_add) ;
if(bigTypeName != null){
bigTypeNameText.setText(bigTypeName);
}
Button btn_type_add = (Button) findViewById(R.id.btn_type_add);
btn_type_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(TextUtils.isEmpty(smallTypeText.getText())){
Toast.makeText(getApplicationContext(),"次要类型名不能为空", Toast.LENGTH_LONG).show();
}
if(TextUtils.isEmpty(bigTypeNameText.getText())) {
Toast.makeText(getApplicationContext(),"主要类型名不能为空", Toast.LENGTH_LONG).show();
}
}
});
}
}
3.关于对话框AlertDialog的按钮区别
之前一直是按照书上的进行设置,一个positive(确定)按钮,一个negative(取消)按钮。
下面是一个例子,对list_view列表监听,点击列表时弹出是否删除对话框,选择否无事发生,选择是则连接服务器进行删除操作。
list_view.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView textView = (TextView) view;
String smallTypeName = (String) textView.getText();
AlertDialog alertDialog = new AlertDialog.Builder(getActivity()).create();
alertDialog.setTitle("删除");
alertDialog.setMessage("是否要删除该类型?");
alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
RequestParams requestParams = new RequestParams();
requestParams.add("smallType",smallTypeName.trim());
//获取保存的用户信息
SharedPreferences preferences = getActivity().getSharedPreferences("UserInfo", Activity.MODE_PRIVATE);
String username = preferences.getString("userName", "error");
requestParams.add("userName",username);
new AsyncHttpClient().post("http://ip地址/StudentTimeManage/TypeDeleteServletApp", requestParams, new AsyncHttpResponseHandler() {
@Override
public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
if (statusCode == 200){
Toast.makeText(getActivity(), new String(responseBody), Toast.LENGTH_LONG).show();
}
}
@Override
public void onFailure(int i, Header[] headers, byte[] bytes, Throwable throwable) {
}
});
}
});
alertDialog.show();
}
});
现要改变当前对话框为,点击列表后,弹出对话框,按钮为删除,修改,取消三个。
由于需要在对话框中加入第三个按钮,于是回去翻书发现还有一个neutral(中立)按钮,于是有些好奇其中的区别。
目前来看三个的区别在于位置