Hier ist der Code der Hauptaktivität. Ich habe TextView in addJoke() -Methode hinzugefügt, aber es erscheint nicht in LinearLayout. bitte lösen.TextView erscheint nicht oder wird nicht zu LinearLayout hinzugefügt
package edu.calpoly.android.lab2;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup.LayoutParams;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
public class AdvancedJokeList extends Activity {
private static int i=0;
//protected String m_strAuthorName;
protected ArrayList<Joke> m_arrJokeList=new ArrayList<Joke>();
//protected JokeListAdapter m_jokeAdapter;
/**
* ViewGroup used for maintaining a list of Views that each display Jokes.
**/
protected LinearLayout m_vwJokeLayout;
protected EditText m_vwJokeEditText;
protected Button m_vwJokeButton;
protected int m_nDarkColor;
protected int m_nLightColor;
/**
* Filter Options Submenu constants
*/
protected static final int FILTER_OPTIONS = 1;
protected static final int LIKE = Menu.FIRST + 1;
protected static final int DISLIKE = Menu.FIRST + 2;
protected static final int UNRATED = Menu.FIRST + 3;
protected static final int SHOW_ALL = Menu.FIRST + 4;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initLayout();
String[] jokestring=getResources().getStringArray(R.array.jokeList);
for(String str : jokestring)
{
Joke j=new Joke();
j.setJoke(str);
addJoke(j);
}
initAddJokeListeners();
}
protected void addJokeImplementation(){
String strJoke=m_vwJokeEditText.getText().toString().trim();
if(!strJoke.equals(""))
{
Joke joke=new Joke();
joke.setJoke(strJoke);
addJoke(joke);
}
}
protected void initLayout() {
setContentView(R.layout.advanced);
m_vwJokeLayout=(LinearLayout)findViewById(R.id.jokeListViewGroup);
m_vwJokeEditText=(EditText)findViewById(R.id.newJokeEditText);
m_vwJokeButton=(Button)findViewById(R.id.addJokeButton);
}
protected void initAddJokeListeners() {
// TODO
m_vwJokeEditText.setOnKeyListener(new OnKeyListener(){
@Override
public boolean onKey(View v,int keyCOde, KeyEvent event){
if(event.getAction()==KeyEvent.ACTION_DOWN)
{
if(keyCOde==KeyEvent.KEYCODE_DPAD_CENTER)
{
addJokeImplementation();
}
}
return false;
}
});
m_vwJokeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//Implement code to add a new joke here...
addJokeImplementation();
}
});
}
protected void addJoke(Joke joke) {
if(!m_arrJokeList.contains(joke))
{
m_arrJokeList.add(joke);
//I also added textview here this one also
//doesn't appear in Emulator layout, wondering whats wrong?;
TextView TV=new TextView(this);
TV.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
TV.setText(joke.toString());
m_vwJokeLayout.addView(TV);
m_nDarkColor=getResources().getColor(R.color.dark);
m_nLightColor=getResources().getColor(R.color.light);
if(i==0)
{
TV.setBackgroundColor(m_nLightColor);
i=1;
}
else
{
TV.setBackgroundColor(m_nDarkColor);
i=0;
}
m_vwJokeEditText.setText("");
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(m_vwJokeEditText.getWindowToken(), 0);
}
}
/**
* Method used to retrieve Jokes from online server. The getJoke script
* takes a single optional parameter, which should be encode in "UTF-8".
* This parameter allows tells script to only retrieve Jokes whose author
* name matches the value in the parameter.
*
* param-1) "author": The author of the joke.
*
* URL: http://simexusa.com/aac/getJokes.php?
*
*/
protected void getJokesFromServer() {
// TODO
}
/**
* This method uploads a single Joke to the server. This method should test
* the response from the server and display success or failure to the user
* via a Toast Notification
*
* The addJoke script on the server requires two parameters, both of which
* should be encode in "UTF-8":
*
* param-1) "joke": The text of the joke.
*
* param-2) "author": The author of the joke.
*
* URL: http://simexusa.com/aac/addJoke.php?
*
* @param joke
* The Joke to be uploaded to the server.
*
*/
protected void uploadJokeToServer(Joke joke) {
// TODO
}
}
Hier ist advanced.xml;
Update: Modifizierter Code ein wenig, hinzugefügt Layout.params(), aber immer noch TextView nicht angezeigt.
ist es wirklich notwendig, setContentView() erneut aufzurufen, wenn der View Tree immer gleich ist (auch wenn mit etwas mehr "Blättern")? – bigstones
Ich habe den letzten Satz nicht verstanden .... Ich habe TextView Kind von root Layout hinzugefügt .... Ist das das Problem? – naquiuddin
Ich habe Bezug auf das Kind-Layout genommen und das TextView-Widget hinzugefügt, siehe Code, aber immer noch nicht ... Ist es notwendig, die Höhe und Breite Parameter beim dynamischen Hinzufügen der TextView zu setzen? – naquiuddin