protected void init() { a=getIntent().getIntExtra("detail",1); tvTitle.setText("发布动态"); sptype.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String[] language=getResources().getStringArray(R.array.leixing); leixing11=language[position]; } @Override public void onNothingSelected(AdapterView<?> parent) { } }); }解释一下
时间: 2024-02-14 08:19:46 浏览: 61
这段代码是一个Android应用程序中的初始化函数,其中包含了一些UI组件的初始化和事件监听器的设置。具体来说,这段代码实现了以下功能:
1. 获取从Intent中传递过来的名为"detail"的整数值,并将其赋值给变量a;
2. 设置UI界面中的标题为"发布动态";
3. 为下拉框组件sptype设置一个选择监听器,在用户选择其中一项时,将该项的值赋值给变量leixing11;如果用户未选择任何项,则不执行任何操作。其中,数组language是从资源文件中获取的一个字符串数组,用于初始化下拉框的选项。
4. 该代码片段并没有显示tvTitle和sptype的初始化,假设它们是在其他地方初始化的。
相关问题
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.edit_layout); myToolbar = findViewById(R.id.my_Toolbar); setSupportActionBar(myToolbar); getSupportActionBar().setHomeButtonEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); //设置toolbar取代actionbar myToolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { autoSetMessage(); setResult(RESULT_OK, intent); finish(); } }); et = findViewById(R.id.et); Intent getIntent = getIntent(); openMode = getIntent.getIntExtra("mode", 0); if (openMode == 3) {//打开已存在的note id = getIntent.getLongExtra("id", 0); old_content = getIntent.getStringExtra("content"); old_time = getIntent.getStringExtra("time"); old_Tag = getIntent.getIntExtra("tag", 1); et.setText(old_content); et.setSelection(old_content.length()); } }这段代码怎么改成fragment的
要将这段代码改成Fragment,需要将其中的Activity相关的代码改成Fragment相关的代码。具体实现如下:
1. 首先,将类定义修改为继承Fragment类,如下:
```
public class EditFragment extends Fragment {
```
2. 将onCreate方法中的super.onCreate(savedInstanceState)删除,因为Fragment没有这个方法,如下:
```
@Override
public void onCreate(Bundle savedInstanceState) {
// 删除super.onCreate(savedInstanceState);
// ...
}
```
3. 将setContentView方法删除,因为Fragment没有布局文件,布局文件应该在Activity中实现,如下:
```
// 删除setContentView(R.layout.edit_layout);
```
4. 将findViewById方法中的参数修改为Fragment的布局文件中的控件ID,如下:
```
myToolbar = view.findViewById(R.id.my_Toolbar);
et = view.findViewById(R.id.et);
```
5. 将getIntent方法修改为getArguments方法,因为Fragment没有getIntent方法,如下:
```
Bundle args = getArguments();
openMode = args.getInt("mode", 0);
if (openMode == 3) {//打开已存在的note
id = args.getLong("id", 0);
old_content = args.getString("content");
old_time = args.getString("time");
old_Tag = args.getInt("tag", 1);
et.setText(old_content);
et.setSelection(old_content.length());
}
```
6. 将setSupportActionBar方法和getSupportActionBar方法删除,因为Fragment没有这些方法,如下:
```
// 删除setSupportActionBar(myToolbar);
// 删除getSupportActionBar().setHomeButtonEnabled(true);
// 删除getSupportActionBar().setDisplayHomeAsUpEnabled(true);
```
7. 将setNavigationOnClickListener方法修改为setOnClickListener方法,因为Fragment没有setNavigationOnClickListener方法,如下:
```
myToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
autoSetMessage();
setResult(RESULT_OK, intent);
getActivity().finish();
}
});
```
注意:在Fragment中需要使用getActivity()方法来获取所在的Activity。
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.show); mTextview = (TextView)this.findViewById(R.id.showtext); time = (TextView)this.findViewById(R.id.showtime); mDb = new NoteDb(this); mSql = mDb.getWritableDatabase(); mTextview.setText(getIntent().getStringExtra(NoteDb.CONTENT)); time.setText(getIntent().getStringExtra(NoteDb.TIME)); } public void delete(View v) { int id = getIntent().getIntExtra(NoteDb.ID,0); mSql.delete(NoteDb.TABLE_NAME," _id = " + id,null); finish(); } public void goBack(View v) { finish(); } }在这当中添加一个修改的方法
可以在该类中添加一个名为update的方法,代码如下:
```
public void update(View v) {
int id = getIntent().getIntExtra(NoteDb.ID, 0);
String content = mTextview.getText().toString();
String updateTime = getCurrentTime();
ContentValues values = new ContentValues();
values.put(NoteDb.CONTENT, content);
values.put(NoteDb.TIME, updateTime);
mSql.update(NoteDb.TABLE_NAME, values, " _id = " + id, null);
Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
}
```
该方法首先获取当前笔记的ID,然后获取笔记的内容和当前时间。接着创建一个ContentValues对象,将笔记内容和当前时间存入其中。最后使用SQLiteDatabase的update方法更新该笔记,并弹出一个提示框提示修改成功。注意,该方法需要在布局文件中添加一个Button,并将其绑定到该方法上。
阅读全文