Java AlertDialog布局元素-如何访问它们?
我一直在为Android应用程序开发GUI。当我突然被一项简单的任务弄得措手不及时,一切都很顺利: 我有一个活动。在里面,我有一个列表视图。我想做的是:单击ListView中的项时-打开包含有关此位置的更多信息的对话框。嗯,显示一个对话框有点容易,但问题是我不能更改f.e.标题。为什么?这是我的密码:Java AlertDialog布局元素-如何访问它们?,java,android,android-activity,dialog,Java,Android,Android Activity,Dialog,我一直在为Android应用程序开发GUI。当我突然被一项简单的任务弄得措手不及时,一切都很顺利: 我有一个活动。在里面,我有一个列表视图。我想做的是:单击ListView中的项时-打开包含有关此位置的更多信息的对话框。嗯,显示一个对话框有点容易,但问题是我不能更改f.e.标题。为什么?这是我的密码: public class SzukajActivity extends Activity { private ListView searchResultsListView; private Str
public class SzukajActivity extends Activity {
private ListView searchResultsListView;
private String DB[] = {"Blah", "Bleh", "Boing", "Quing", "Something"};
private ArrayList<String> searchResults = new ArrayList<String>();
private EditText searchNameEditText;
private ArrayAdapter<String> searchListViewAdapter;
private TextView prowadzacyName;
private AlertDialog prowadzacyDialog;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LayoutInflater searchFactory = LayoutInflater.from(this);
final View searchView = searchFactory.inflate(R.layout.search, null);
setContentView(searchView);
// prowadzacySite Dialog
LayoutInflater prowadzacySiteFactory = LayoutInflater.from(this);
final View prowadzacyDialogView = prowadzacySiteFactory.inflate(R.layout.prowadzacy_site, null);
prowadzacyName = (TextView) findViewById(R.id.prowadzacyname);
//prowadzacyName.setText("a KUKU!");
AlertDialog.Builder prowadzacyDialogBuilder = new AlertDialog.Builder(this);
prowadzacyDialogBuilder.setTitle("Prowadzacy")
.setCancelable(false)
.setView(prowadzacyDialogView)
.setPositiveButton("Zapisz się", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
})
.setNegativeButton("Zakoncz", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
prowadzacyDialog = prowadzacyDialogBuilder.create();
searchResultsListView = (ListView) findViewById(R.id.searchKurczeBladeView);
searchListViewAdapter = new ArrayAdapter<String>(this, R.layout.spotkanialistitem, searchResults);
searchResultsListView.setAdapter(searchListViewAdapter);
searchResultsListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
prowadzacyName = (TextView) findViewById(R.id.prowadzacyname);
if(prowadzacyName == null) Toast.makeText(SzukajActivity.this, "BOOOOM!", Toast.LENGTH_SHORT).show();
//prowadzacyName.setText("A KUKU!");
prowadzacyDialog.show();
}
});
searchNameEditText = (EditText) findViewById(R.id.searchName);
searchNameEditText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER))
{
searchResults.clear();
for(int i = 0; i < 5; ++i)
{
if(DB[i].contains(searchNameEditText.getText()))
{
searchResults.add(DB[i]);
}
}
if(searchResults.size() == 0)
Toast.makeText(SzukajActivity.this, "Nie znaleziono odpowiadających prowadzących", Toast.LENGTH_SHORT).show();
searchListViewAdapter.notifyDataSetChanged();
return true;
}
else
return false;
}
});
}
}
公共类Szukajavity扩展活动{
私有ListView searchResultsListView;
私有字符串DB[]={“Blah”、“Bleh”、“Boing”、“Quing”、“Something”};
private ArrayList searchResults=新建ArrayList();
私有EditText searchNameEditText;
专用ArrayAdapter searchListViewAdapter;
私有文本视图prowadzacyName;
私有AlertDialog ProwadzacDialog;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LayoutInflater searchFactory=LayoutInflater.from(this);
最终视图searchView=searchFactory.inflate(R.layout.search,null);
setContentView(searchView);
//普罗旺西汀对话框
LayoutInflater prowadzacySiteFactory=LayoutInflater.from(this);
最终视图prowadzacyDialogView=prowadzacySiteFactory.inflate(R.layout.prowadzacy_站点,null);
prowadzacyName=(TextView)findViewById(R.id.prowadzacyName);
//prowadzacyName.setText(“一个KUKU!”);
AlertDialog.Builder prowadzacyDialogBuilder=新建AlertDialog.Builder(此);
prowadzacyDialogBuilder.setTitle(“Prowadzacy”)
.setCancelable(错误)
.setView(prowadzacyDialogView)
.setPositiveButton(“Zapisz się”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
})
.setNegativeButton(“Zakoncz”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
prowadzacyDialog=prowadzacyDialogBuilder.create();
searchResultsListView=(ListView)findViewById(R.id.searchKurczeBladeView);
searchListViewAdapter=new ArrayAdapter(这个,R.layout.spotkanalistItem,searchResults);
searchResultsListView.setAdapter(searchListViewAdapter);
searchResultsListView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、内部arg2、,
长arg3){
prowadzacyName=(TextView)findViewById(R.id.prowadzacyName);
如果(prowadzacyName==null)Toast.makeText(SzukajActivity.this,“BOOOOM!”,Toast.LENGTH_SHORT.show();
//prowadzacyName.setText(“一个KUKU!”);
prowadzacyDialog.show();
}
});
searchNameEditText=(EditText)findViewById(R.id.searchName);
searchNameEditText.setOnKeyListener(新的OnKeyListener(){
@凌驾
公共布尔onKey(视图v、int keyCode、KeyEvent事件){
如果((event.getAction()==KeyEvent.ACTION\u DOWN)&&(keyCode==KeyEvent.keyCode\u ENTER))
{
searchResults.clear();
对于(int i=0;i<5;++i)
{
if(DB[i].contains(searchNameEditText.getText())
{
searchResults.add(DB[i]);
}
}
if(searchResults.size()==0)
Toast.makeText(szukajiono.this,“Nie znaleziono odpowidających prowadzących”,Toast.LENGTHąu SHORT.show();
searchListViewAdapter.notifyDataSetChanged();
返回true;
}
其他的
返回false;
}
});
}
}
直接的问题是,在onItemClick函数中,我想从对话框布局访问prowadzacyName
,这是一个TextView
。它将始终为空,因为我设置了setContentView(searchView)
。我这样做是因为这是我活动的布局
有没有一种可能的方法来访问这些元素,或者更确切地说,有没有其他方法来获得我想要的?(我原以为对话是另一种活动,但听起来让我毛骨悚然——每一种可能的对话都是另一种活动?!:p)
试一试
照我所知,你曾经
final View searchView = searchFactory.inflate(R.layout.search, null);
setContentView(searchView);
在这种情况下,如果要访问子视图,请使用
prowadzacyName = (TextView)searchView.findViewById(R.id.prowadzacyname);
我想这可能会解决你的问题。据我所知,你曾经
final View searchView = searchFactory.inflate(R.layout.search, null);
setContentView(searchView);
在这种情况下,如果要访问子视图,请使用
prowadzacyName = (TextView)searchView.findViewById(R.id.prowadzacyname);
我想这可能会解决你的问题。哦,天哪,那太容易了:哦,非常感谢,很抱歉打扰你;)哦,我的上帝,这太简单了:哦,非常感谢你,抱歉打扰你;)