Java 在listitem click中使用文本到语音不起作用,myactivity在Tabactivity中
我有一个动态列表视图,当单击列表项时,该字符串数组已转换为文本到语音函数,我将该字符串数组存储在字符串中,然后仅转换为文本到语音 这里我包括了我的代码Java 在listitem click中使用文本到语音不起作用,myactivity在Tabactivity中,java,android,text-to-speech,Java,Android,Text To Speech,我有一个动态列表视图,当单击列表项时,该字符串数组已转换为文本到语音函数,我将该字符串数组存储在字符串中,然后仅转换为文本到语音 这里我包括了我的代码 public class TTSList extends ListActivity implements TextToSpeech.OnInitListener { private static final int ACTIVITY_CREATE=0; private static final int ACTIVITY_EDIT=
public class TTSList extends ListActivity implements TextToSpeech.OnInitListener {
private static final int ACTIVITY_CREATE=0;
private static final int ACTIVITY_EDIT=1;
private GinfyDbAdapter mDbHelper;
private SimpleCursorAdapter dataAdapter;
ListView lv;
public Button btnadd1;
private TextToSpeech tts;
String typed1;
public String praystring;
public TextView txtText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tts_list);
lv =(ListView)findViewById(R.id.list);
mDbHelper = new GinfyDbAdapter(this);
btnadd1 = (Button)findViewById(R.id.btnadd);
btnadd1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
createProject();
}
});
mDbHelper.open();
fillData();
registerForContextMenu(getListView());
}
@SuppressLint("NewApi")
@SuppressWarnings("deprecation")
private void fillData() {
mDbHelper.open();
Cursor projectsCursor = mDbHelper.fetchAllProjects1();
//startManagingCursor(projectsCursor);
// Create an array to specify the fields we want to display in the list (only TITLE)
String[] from = new String[]{GinfyDbAdapter.CATEGORY_COLUMN_PRAYERNAME,GinfyDbAdapter.CATEGORY_COLUMN_WDATE};
// and an array of the fields we want to bind those fields to (in this case just text1)
int[] to = new int[]{R.id.text1,R.id.date};
dataAdapter = new SimpleCursorAdapter(
this, R.layout.activity_row2,
projectsCursor,
from,
to,
0);
setListAdapter(dataAdapter);
EditText myFilter = (EditText) findViewById(R.id.myFilter);
myFilter.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
public void onTextChanged(CharSequence s, int start,
int before, int count) {
dataAdapter.getFilter().filter(s.toString());
}
});
dataAdapter.setFilterQueryProvider(new FilterQueryProvider() {
public Cursor runQuery(CharSequence constraint) {
return mDbHelper.fetchProjectByName(constraint.toString());
}
});
tts = new TextToSpeech(this, this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
super.onCreateOptionsMenu(menu);
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.activity_main, menu);
return true;
}
@Override
public boolean onMenuItemSelected(int featureId, MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_insert:
createProject();
return true;
}
return super.onMenuItemSelected(featureId, item);
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
MenuInflater mi = getMenuInflater();
mi.inflate(R.menu.activity_menu_long, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.menu_delete:
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
mDbHelper.deleteProject1(info.id);
fillData();
return true;
case R.id.menu_edit:
AdapterContextMenuInfo info1 = (AdapterContextMenuInfo) item.getMenuInfo();
Intent i = new Intent(this, TTSprayer.class);
i.putExtra(GinfyDbAdapter.CATEGORY_COLUMN_ID1, info1.id);
startActivityForResult(i, ACTIVITY_EDIT);
return true;
}
return super.onContextItemSelected(item);
}
private void createProject() {
Intent i = new Intent(this, TTSprayer.class);
startActivityForResult(i, ACTIVITY_CREATE);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
Cursor Release = mDbHelper.fetchProject1(id);
String Releasename = Release.getString(Release.getColumnIndexOrThrow(GinfyDbAdapter.CATEGORY_COLUMN_GODNAME));
String Releasename1 = Release.getString(Release.getColumnIndexOrThrow(GinfyDbAdapter.CATEGORY_COLUMN_PRAYFOR));
String Releasename2 = Release.getString(Release.getColumnIndexOrThrow(GinfyDbAdapter.CATEGORY_COLUMN_PRAYEEENAME));
List<String> godname = new ArrayList<String>(Arrays.asList(Releasename.split(",")));
List<String> prayfor = new ArrayList<String>(Arrays.asList(Releasename1.split(",")));
List<String> people = new ArrayList<String>(Arrays.asList(Releasename2.split(",")));
for (String temp : godname) {
for (String temp1 : prayfor) {
for (String temp2 : people) {
praystring = temp +" " + temp1 +" "+ temp2 + " ";
}
}
}
typed1 = praystring;
speakOut();
}
@Override
public void onDestroy() {
// Don't forget to shutdown tts!
if (tts != null) {
tts.stop();
tts.shutdown();
}
super.onDestroy();
}
public void onInit(int status) {
if (status == TextToSpeech.SUCCESS) {
int result = tts.setLanguage(Locale.US);
if (result == TextToSpeech.LANG_MISSING_DATA
|| result == TextToSpeech.LANG_NOT_SUPPORTED) {
Log.e("TTS", "This Language is not supported");
} else {
//btnaudioprayer.setEnabled(true);
speakOut();
}
} else {
Log.e("TTS", "Initilization Failed!");
}
}
private void speakOut() {
tts.speak(typed1, TextToSpeech.QUEUE_FLUSH, null);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
fillData();
}
公共类TTSList扩展ListActivity实现TextToSpeech.OnInitListener{
私有静态最终整数活动_CREATE=0;
私有静态最终整数活动_EDIT=1;
私人轧花机;
私有SimpleCursorAdapter数据适配器;
ListView lv;
公共按钮btnadd1;
私密文本语音tts;
字符串类型1;
公共字符串praystring;
公共文本视图txtText;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u tts\u列表);
lv=(ListView)findViewById(R.id.list);
mDbHelper=新轧棉机适配器(本);
btnadd1=(按钮)findViewById(R.id.btnadd);
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
createProject();
}
});
mDbHelper.open();
fillData();
registerForContextMenu(getListView());
}
@SuppressLint(“新API”)
@抑制警告(“弃用”)
私有void fillData(){
mDbHelper.open();
游标projectsCursor=mDbHelper.fetchAllProjects1();
//开始管理光标(projectsCursor);
//创建一个数组以指定要在列表中显示的字段(仅标题)
String[]from=新字符串[]{ginfydadapter.CATEGORY_COLUMN_PRAYERNAME,ginfydadapter.CATEGORY_COLUMN_WDATE};
//以及要将这些字段绑定到的字段数组(在本例中仅为text1)
int[]to=newint[]{R.id.text1,R.id.date};
dataAdapter=新的SimpleCorsorAdapter(
这个,R.layout.activity_row2,
projectsCursor,
从…起
到
0);
setListAdapter(数据适配器);
EditText myFilter=(EditText)findViewById(R.id.myFilter);
myFilter.addTextChangedListener(新的TextWatcher(){
公共无效后文本已更改(可编辑){
}
更改前的公共无效(字符序列、整数开始、,
整数计数,整数后){
}
public void onTextChanged(字符序列,int start,
前整数,整数计数){
dataAdapter.getFilter().filter(s.toString());
}
});
setFilterQueryProvider(新的FilterQueryProvider(){
公共游标运行查询(CharSequence约束){
返回mDbHelper.fetchProjectByName(constraint.toString());
}
});
tts=新的TextToSpeech(这个,这个);
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
super.onCreateOptions菜单(菜单);
MenuInflater mi=getMenuInflater();
mi.充气(右菜单活动主菜单);
返回true;
}
@凌驾
公共布尔值onMenuItemSelected(int-featureId,MenuItem项){
开关(item.getItemId()){
案例R.id.菜单\插入:
createProject();
返回true;
}
返回super.onMenuItemSelected(featureId,item);
}
@凌驾
public void onCreateContextMenu(ContextMenu,视图v,
上下文菜单信息(menuInfo){
super.onCreateContextMenu(menu,v,menuInfo);
MenuInflater mi=getMenuInflater();
mi.充气(右菜单、活动菜单、长菜单);
}
@凌驾
公共布尔值onContextItemSelected(MenuItem项){
开关(item.getItemId()){
案例R.id.菜单\u删除:
AdapterContextMenuInfo信息=(AdapterContextMenuInfo)项。getMenuInfo();
mDbHelper.deleteProject1(信息id);
fillData();
返回true;
案例R.id.菜单\编辑:
AdapterContextMenuInfo信息1=(AdapterContextMenuInfo)项。getMenuInfo();
意向i=新意向(此,TTSprayer.class);
i、 putExtra(ginfydAdapter.CATEGORY_COLUMN_ID1,info1.id);
startActivityForResult(一,活动编辑);
返回true;
}
返回super.onContextItemSelected(项目);
}
私有项目(){
意向i=新意向(此,TTSprayer.class);
startActivityForResult(i,活动\创建);
}
@凌驾
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
super.onListItemClick(左、右、位置、id);
游标释放=mDbHelper.fetchProject1(id);
String Releasename=Release.getString(Release.getColumnIndexOrThrow(ginfydAdapter.CATEGORY_COLUMN_GODNAME));
String Releasename1=Release.getString(Release.getColumnIndexOrThrow(ginfydAdapter.CATEGORY_COLUMN_PRAYFOR));
String Releasename2=Release.getString(Release.getColumnIndexOrThrow(ginfydAdapter.CATEGORY_COLUMN_pageName));
List godname=newarraylist(Arrays.asList(Releasename.split(“,”));
List prayfor=newarraylist(Arrays.asList(Releasename1.split(“,”));
List people=newarraylist(Arrays.asList(Releasename2.split(“,”));
用于(字符串温度:godname){
for(字符串temp1:prayfor){
for(字符串temp2:people){
praystring=temp+“”+temp1+“”+temp2+“”;
}
tts = new TextToSpeech(this, this);
tts = new TextToSpeech(getParent(),TTSList.this);
@Override
public void onInit(int status)