2015-09-02 4 views
1

У меня есть эта проблема. В моей деятельности (TripActivity.java) я извлек строку из URL. Затем, когда я нажимаю кнопку в своей активности, я хочу, чтобы извлеченная строка была вставлена ​​в текстовое представление во втором действии (EventActivity.java). Строка, которую я хочу передать, - linkText. Я пробовал с putExtra, но он не работает.Как отправить строку, извлеченную Jsoup, другой активности в Android Studio?

Моя первая Деятельность:

public class TripActivity extends Activity implements View.OnClickListener { 

private ImageButton btColosseo; 
private ImageButton btArcoCostantino; 
private ImageButton btDomus; 
private ImageButton btForo; 
private ImageButton btConfermaViaggio; 
private String monumento = "null"; 

private String Visita1 = "Colosseo"; 
private String Visita2 = "Domus Aurea"; 
private String Visita3 = "Arco di Costantino"; 
private String Visita4 = "Foro Romano e Palatino"; 

public static final String BASE_URL = "http://archeoroma.beniculturali.it/siti-archeologici/"; 


private static final String LOG_TAG = "TripActivity"; 
private String NomeMonumento; 
public String linkText= ""; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_trip); 

    Bundle datipassati = getIntent().getExtras(); 
    String Viaggio = datipassati.getString("Viaggio"); 
    String Citta = datipassati.getString("Citta"); 
    int Budget = getIntent().getIntExtra("Budget", -1); 
    String Percorso = datipassati.getString("Percorso"); 
    Boolean Shopping = datipassati.getBoolean("Shopping"); 
    Boolean Cultura = datipassati.getBoolean("Cultura"); 
    Boolean Cucina = datipassati.getBoolean("Cucina"); 
    Boolean Eventi = datipassati.getBoolean("Eventi"); 


    Log.d(LOG_TAG, Viaggio); 
    Log.d(LOG_TAG, Citta); 
    Log.d(LOG_TAG, "Il budget e':" + Budget); 
    Log.d(LOG_TAG, Percorso); 
    Log.d(LOG_TAG, "L'opzione shopping e' settata su: " + Shopping); 
    Log.d(LOG_TAG, "L'opzione cucina e' settata su: " + Cucina); 
    Log.d(LOG_TAG, "L'opzione cultura e' settata su: " + Cultura); 
    Log.d(LOG_TAG, "L'opzione eventi e' settata su: " + Eventi); 

    btColosseo = (ImageButton) findViewById(R.id.btcolosseo); 
    btColosseo.setOnClickListener(this); 

    btArcoCostantino = (ImageButton) findViewById(R.id.btarcocostantino); 
    btArcoCostantino.setOnClickListener(this); 

    btDomus = (ImageButton) findViewById(R.id.btdomus); 
    btDomus.setOnClickListener(this); 

    btForo = (ImageButton) findViewById(R.id.btforopalatino); 
    btForo.setOnClickListener(this); 

    btConfermaViaggio = (ImageButton) findViewById(R.id.btconfermaviaggio); 
    btConfermaViaggio.setOnClickListener(this); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
     case (Const.IntentRequest.SET_OPTIONS): { 
      if (resultCode == Activity.RESULT_OK) { 
       Log.d(LOG_TAG, "Risultato " + getIntent().getExtras().getBoolean("ButtonVisible")); 
       if (getIntent().getExtras().getBoolean("ButtonVisible") == false && monumento == "Colosseo") { 
        btColosseo.setVisibility(View.GONE); 
        Visita1 = "null"; 
       } 
       if (getIntent().getExtras().getBoolean("ButtonVisible") == false && monumento == "Domus Aurea") { 
        btDomus.setVisibility(View.GONE); 
        Visita2 = "null"; 
       } 
       if (getIntent().getExtras().getBoolean("ButtonVisible") == false && monumento == "Arco di Costantino") { 
        btArcoCostantino.setVisibility(View.GONE); 
        Visita3 = "null"; 
       } 
       if (getIntent().getExtras().getBoolean("ButtonVisible") == false && monumento == "Foro Romano e Palatino") { 
        btForo.setVisibility(View.GONE); 
        Visita4 = "null"; 
       } 
      } 
      break; 
     } 
    } 
} 


@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btcolosseo: { 
      monumento = "Colosseo"; 
      Log.d(LOG_TAG, "Hai premuto Colosseo"); 
      NomeMonumento = monumento.trim().toLowerCase().replace(" ","-"); 
      new Description().execute(); 
      Intent startEventActivity = new Intent(TripActivity.this, EventActivity.class); 
      startEventActivity.putExtra("Monumento", monumento); 
      this.startActivityForResult(startEventActivity, Const.IntentRequest.SET_OPTIONS); 
      break; 
     } 
     case R.id.btdomus: { 
      monumento = "Domus Aurea"; 
      Log.d(LOG_TAG, "Hai premuto Domus Aurea"); 
      NomeMonumento = monumento.trim().toLowerCase().replace(" ","-"); 
      new Description().execute(); 
      Intent startEventActivity = new Intent(this, EventActivity.class); 
      startEventActivity.putExtra("Monumento", monumento); 
      this.startActivityForResult(startEventActivity, Const.IntentRequest.SET_OPTIONS); 
      break; 
     } 
     case R.id.btarcocostantino: { 
      monumento = "Arco di Costantino"; 
      Log.d(LOG_TAG, "Hai premuto Arco di Costantino"); 
      NomeMonumento = monumento.trim().toLowerCase().replace(" di ", "-"); 
      new Description().execute(); 
      Intent startEventActivity = new Intent(this, EventActivity.class); 
      startEventActivity.putExtra("Monumento", monumento); 
      this.startActivityForResult(startEventActivity, Const.IntentRequest.SET_OPTIONS); 
      break; 
     } 
     case R.id.btforopalatino: { 
      monumento = "Foro Romano e Palatino"; 
      Log.d(LOG_TAG, "Hai premuto Foro Romano"); 
      NomeMonumento = monumento.trim().toLowerCase().replace(" e ", "-"); 
      NomeMonumento = NomeMonumento.trim().toLowerCase().replace(" ", "-"); 
      new Description().execute(); 
      Intent startEventActivity = new Intent(this, EventActivity.class); 
      startEventActivity.putExtra("Monumento", monumento); 
      this.startActivityForResult(startEventActivity, Const.IntentRequest.SET_OPTIONS); 
      break; 
     } 
     case R.id.btconfermaviaggio: { 
      Intent startFinalActivity = new Intent(this, FinalActivity.class); 
      startFinalActivity.putExtra("Visita1", Visita1); 
      startFinalActivity.putExtra("Visita2", Visita2); 
      startFinalActivity.putExtra("Visita3", Visita3); 
      startFinalActivity.putExtra("Visita4", Visita4); 
      this.startActivityForResult(startFinalActivity, Const.IntentRequest.SET_OPTIONS); 
     } 
     } 
    } 

private class Description extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      // Connect to the web site 
      Document document = Jsoup.connect(BASE_URL + NomeMonumento).get(); 
      Element content = document.getElementById("content-area"); 
      Elements desc = content.getElementsByTag("p"); 
      linkText=" "; 
      String keyword = "prenotazione"; 
      String keyword2 = "weekend"; 
      String keyword3 = "3000"; 
      String keyword4 = "2015"; 

      for (Element link: desc) { 
       if((link.text().length() >= 150) && (link.text().toLowerCase().indexOf(keyword.toLowerCase()) == -1) 
         && (link.text().toLowerCase().indexOf(keyword2.toLowerCase()) == -1) 
         && (link.text().toLowerCase().indexOf(keyword3.toLowerCase()) == -1) 
         && (link.text().toLowerCase().indexOf(keyword4.toLowerCase()) == -1)){ 
        linkText = linkText + " " + link.text(); 
       } 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
}} 

Вторая активность:

public class EventActivity extends Activity implements View.OnClickListener{ 

private ViewFlipper viewFlipper; 
private GestureDetector mGestureDetector; 

private ImageButton btConferma2; 
private ImageButton btElimina; 
private TextView tvMonumento; 
private WebView wvMap; 
private TextView tvDescrizione; 
//private String NomeMonumento; 

public static final String MAP = "https://www.google.it/maps/"; 

int[] colosseo = {R.drawable.colosseo1, R.drawable.colosseo2}; 
int[] arco = {R.drawable.arcocostantino1, R.drawable.arcocostantino2}; 
int [] domus = {R.drawable.domusaurea1, R.drawable.domusaurea2}; 
int [] foroepalatino = {R.drawable.fororomanoepalatino1, R.drawable.fororomanoepalatino2}; 


private static final String LOG_TAG = "EventActivity"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_event); 

    btConferma2 = (ImageButton) findViewById(R.id.btconferma2); 
    btElimina = (ImageButton) findViewById(R.id.btelimina); 
    viewFlipper = (ViewFlipper) findViewById(R.id.view_flipper); 
    tvMonumento =(TextView) findViewById(R.id.tvmonumento); 
    tvDescrizione = (TextView) findViewById(R.id.tvtesto); 
    wvMap = (WebView) findViewById(R.id.wvmap); 

    wvMap.setWebViewClient(new WebViewClient()); 
    wvMap.getSettings().setJavaScriptEnabled(true); 

    btConferma2.setOnClickListener(this); 
    btElimina.setOnClickListener(this); 

    String monumento = getIntent().getExtras().getString("Monumento"); 

    Log.d(LOG_TAG, monumento); 

    tvMonumento.setText(monumento); 

    switch (monumento) { 
     case ("Colosseo"): { 
      for (int i = 0; i < colosseo.length; i++) { 
       wvMap.loadUrl(MAP+"@41.8902102,12.4922309,17z"); 
       ImageView imageView = new ImageView(this); 
       imageView.setImageResource(colosseo[i]); 
       viewFlipper.addView(imageView); 
      } 
      break; 
     } 
     case ("Arco di Costantino"):{ 

      for (int i = 0; i < arco.length; i++) { 
       ImageView imageView = new ImageView(this); 
       imageView.setImageResource(arco[i]); 
       viewFlipper.addView(imageView); 
       //wvMap.loadUrl(MAP+); 
      } 
     } 
     case ("Domus Aurea"): { 
      for (int i = 0; i < domus.length; i++) { 
       ImageView imageView = new ImageView(this); 
       imageView.setImageResource(domus[i]); 
       viewFlipper.addView(imageView); 
       //wvMap.loadUrl(MAP+); 
      } 
      break; 
     } 
     case ("Foro Romano e Palatino"): { 
      for (int i = 0; i < foroepalatino.length; i++) { 
       ImageView imageView = new ImageView(this); 
       imageView.setImageResource(foroepalatino[i]); 
       viewFlipper.addView(imageView); 
       //wvMap.loadUrl(MAP+); 
      } 
      break; 
     } 
    } 


    CustomGestureDetector customGestureDetector = new CustomGestureDetector(); 
    mGestureDetector = new GestureDetector(this, customGestureDetector); 
} 

// classe per controllare lo swipe prodotto dalle dita 
class CustomGestureDetector extends GestureDetector.SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 

     // Swipe left (next) 
     if (e1.getX() > e2.getX() && (e1.getY()>0 && e2.getY()< 900)) { 
      viewFlipper.setInAnimation(EventActivity.this, R.anim.left_in); 
      viewFlipper.setOutAnimation(EventActivity.this, R.anim.left_out); 
      viewFlipper.showNext(); 
     } 
     // Swipe right (previous) 
     if (e1.getX() < e2.getX()&& (e1.getY()>0 && e2.getY()< 900)) { 
      viewFlipper.setInAnimation(EventActivity.this, R.anim.right_in); 
      viewFlipper.setOutAnimation(EventActivity.this, R.anim.right_out); 
      viewFlipper.showPrevious(); 
     } 
     return super.onFling(e1, e2, velocityX, velocityY); 
    } 
} 

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    mGestureDetector.onTouchEvent(event); 
    return super.onTouchEvent(event); 
} 


@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btconferma2: { 
      finish(); 
      break; 
     } 
     case R.id.btelimina: { 
      Intent startTripActivity = new Intent(this, TripActivity.class); 
      startTripActivity.putExtra("ButtonVisible", false); 
      setResult(Activity.RESULT_OK,startTripActivity); 
      finish(); 
      break; 
     } 
    } 
}} 

Пожалуйста, помогите мне

+0

Вы можете c reate одно pojo со всеми переменными .... сделать новый объект, установить восстановленные данные и использовать aim.putextra – koutuk

+0

А вы можете сделать ссылку на другую деятельность? –

+0

Я пробовал свой код, и он работает для меня. Мне пришлось отбросить все классы и файлы макетов, которые вы не предоставили. Можете ли вы опубликовать исполняемую версию без какого-либо кода вашего приложения? – wkarl

ответ

0

Я упростить код и добавить комментарий, чтобы облегчить решение проблемы

public class TripActivity extends Activity implements View.OnClickListener { 

private ImageButton btColosseo; 
private String monumento = "null"; 

private String Visita1 = "Colosseo"; 

public static final String BASE_URL = "http://archeoroma.beniculturali.it/siti-archeologici/"; 


private static final String LOG_TAG = "TripActivity"; 
private String NomeMonumento; 
public String linkText= ""; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_trip); 

    btColosseo = (ImageButton) findViewById(R.id.btcolosseo); 
    btColosseo.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 
     case R.id.btcolosseo: { 
      monumento = "Colosseo"; 
      Log.d(LOG_TAG, "Hai premuto Colosseo"); 
      NomeMonumento = monumento.trim().toLowerCase().replace(" ","-"); 
      new Description().execute(); 
      Intent startEventActivity = new Intent(TripActivity.this, EventActivity.class); 
      startEventActivity.putExtra("Monumento", monumento); 
      this.startActivity(startEventActivity); 
      break; 
     } 

    }} 

private class Description extends AsyncTask<Void, Void, Void> { 

    @Override 
    protected Void doInBackground(Void... params) { 
     try { 
      // Connect to the web site 
      Document document = Jsoup.connect(BASE_URL + NomeMonumento).get(); 
      Element content = document.getElementById("content-area"); 
      Elements desc = content.getElementsByTag("p"); 
      linkText=" "; 
      String keyword = "prenotazione"; 
      String keyword2 = "weekend"; 
      String keyword3 = "3000"; 
      String keyword4 = "2015"; 

      for (Element link: desc) { 
       if((link.text().length() >= 150) && (link.text().toLowerCase().indexOf(keyword.toLowerCase()) == -1) 
         && (link.text().toLowerCase().indexOf(keyword2.toLowerCase()) == -1) 
         && (link.text().toLowerCase().indexOf(keyword3.toLowerCase()) == -1) 
         && (link.text().toLowerCase().indexOf(keyword4.toLowerCase()) == -1)){ 
        linkText = linkText + " " + link.text(); 
       } 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
    } // Here I want to send the string linkText to another activity and set a textView with the text extracted from the URL 
}} 
+0

Вы должны отредактировать исходный вопрос и добавить новый код - это не ответ! – TDG

Смежные вопросы