¿Cómo capturar dos botones con un único TextView

Tengo dos botones y quiero que al clicar a cada uno me lance una otra actividad, pero mostrando un mensaje diferente implementando un único Text View. No logro hacerlo con un único TextView.

Mi código:

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      Button btn = (Button) findViewById(R.id.button2);     Button btn2 = (Button) findViewById(R.id.button3);     Button btn3 = (Button) findViewById(R.id.button1);      btn.setOnClickListener(new View.OnClickListener() {          @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str", "check");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Sin");             startActivity(intent);         }     });     btn2.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str2", "check2");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Con");             startActivity(intent);         }     });     btn3.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent3 = new Intent(MainActivity.this,SecondActivity.class);             startActivity(intent3);         }     });  } 

En la otra actividad tengo esto:

```Intent intent = getIntent();     String message = intent.getStringExtra("str");       txt = (TextView) findViewById(R.id.textView2);     txt.setText(""+message); 
 

¿Cómo capturar dos botones con un único TextView

Tengo dos botones y quiero que al clicar a cada uno me lance una otra actividad, pero mostrando un mensaje diferente implementando un único Text View. No logro hacerlo con un único TextView.

Mi código:

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      Button btn = (Button) findViewById(R.id.button2);     Button btn2 = (Button) findViewById(R.id.button3);     Button btn3 = (Button) findViewById(R.id.button1);      btn.setOnClickListener(new View.OnClickListener() {          @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str", "check");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Sin");             startActivity(intent);         }     });     btn2.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent = new Intent(MainActivity.this,thirdActivity.class);             intent.putExtra("str2", "check2");             TextView txt = (TextView) findViewById(R.id.textView2);             txt.setText("Con");             startActivity(intent);         }     });     btn3.setOnClickListener(new View.OnClickListener() {         @Override         public void onClick(View v) {             Intent intent3 = new Intent(MainActivity.this,SecondActivity.class);             startActivity(intent3);         }     });  } 

En la otra actividad tengo esto:

```Intent intent = getIntent();     String message = intent.getStringExtra("str");       txt = (TextView) findViewById(R.id.textView2);     txt.setText(""+message); 
 

Capturar el id de una o varias celdas de un DataGridView para SMS Masivos

Añadí un CheckBox al DataGridView para poder seleccionar varios items y así pasarlos a un Array para poder enviar mensajes de manera masiva.

Problema 1: presionar sobre el CheckBox no se tilda. Cabe mencionar que lo único que hice fue agregarlo desde las propiedades de edición del DataGridView.

Problema 2: para enviar mensajes de manera masiva se utiliza el siguiente bloque en string:

string bloque = ""; bloque = bloque + "ID1\t112223333\tMensaje\n"; 

Pero, yo necesito enviar esos mensajes de manera automática. Es decir que, a excepción del mensaje o texto, el ID y el TELÉFONO se deben cargar y/o asignar seleccionando uno o varios CheckBoxes del DataGridView. Para esto, cree la siguiente clase:

class Datos     {         public int id { get; set; }         public string celular { get; set; }         public string texto{ get; set; }          public Datos() { }         public Datos(int id, string cel, string texto) {             this.id = id;             this.celular = cel;             this.texto= texto;         }          public string toString() {             return "ID"+id+"\t" + celular + "\t" + texto + "\n";         }     } }//el objetivo será utilizarla para cargar un array luego 

Ahora, este es actualmente el código de la interfaz:

public partial class Form1 : Form{         public Form1(){             InitializeComponent();             dtgId.AllowUserToAddRows = false;         }         private void Form1_Load(object sender, EventArgs e){             llenarId();             dtgId.ReadOnly = true;         }          public void llenarId(){//método para poblar el DataGridView             try{                 string cadena = "cadena";                 using (SqlConnection con = new SqlConnection(cadena)){                     con.Open();                     string query = "SELECT id FROM clientes GROUP BY id";                     SqlCommand cmd = new SqlCommand(query, con);                     SqlDataAdapter da = new SqlDataAdapter(cmd);                     DataSet ds = new DataSet();                     da.Fill(ds);                     dtgId.DataSource = ds.Tables[0];                     con.Close();                 }             }             catch (SqlException ex){                 MessageBox.Show("Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);             }         }          private void button2_Click(object sender, EventArgs e){//Código para enviar SMS de manera masiva             string usuario = "usuario";             string clave = "clave";             string respuesta = "";             int id = Convert.ToInt32(txtId.Text);             string telefono = txtNumero.Text;             string texto = txtTexto.Text;             List<Datos> item = new List<Datos>();             Datos datos = new Datos(id, telefono, texto);             item.Add(datos);             string bloque = "";             //bloque = bloque + "ID1\t1144444444\tMi texto 1\n";             for (int i = 0; i > item.Count; i++){                 bloque += item[i].toString();             }              Uri uri = new Uri("uri");              HttpWebRequest requestFile = (HttpWebRequest)WebRequest.Create(uri);             requestFile.Method = "POST";             requestFile.ContentType = "application/x-www-form-urlencoded";             StringBuilder postData = new StringBuilder();             postData.Append("api=" + System.Web.HttpUtility.UrlEncode("1") + "&");             postData.Append("usuario=" + System.Web.HttpUtility.UrlEncode(usuario) + "&");             postData.Append("clave=" + System.Web.HttpUtility.UrlEncode(clave) + "&");             postData.Append("separadorcampos=" + System.Web.HttpUtility.UrlEncode("tab") + "&");             postData.Append("bloque=" + System.Web.HttpUtility.UrlEncode(bloque) + "&");              byte[] byteArray = Encoding.GetEncoding("iso-8859-1").GetBytes(postData.ToString());              requestFile.ContentLength = byteArray.Length;              Stream requestStream = requestFile.GetRequestStream();             requestStream.Write(byteArray, 0, byteArray.Length);             requestStream.Close();              HttpWebResponse webResp = requestFile.GetResponse() as HttpWebResponse;              if (requestFile.HaveResponse){                 if (webResp.StatusCode == HttpStatusCode.OK || webResp.StatusCode == HttpStatusCode.Accepted){                     StreamReader respReader = new StreamReader(webResp.GetResponseStream(), Encoding.GetEncoding("iso-8859-1"));                     respuesta = respReader.ReadToEnd();                     MessageBox.Show(respuesta);                 }             }         }          private void dtgId_CellContentClick(object sender, DataGridViewCellEventArgs e){ //con este método al presionar sobre un checkbox se muestra el id y el teléfono en un TextBox             var row = dtgId.Rows[e.RowIndex];             var id = Convert.ToInt32(row.Cells["id"].Value.ToString());             try{                 string conn = "cadena";                 using (SqlConnection con = new SqlConnection(conn)){                     con.Open();                     string sql = "SELECT id,celular FROM clientes WHERE id=@id";                     SqlCommand cmd = new SqlCommand(sql, con);                     cmd.Parameters.AddWithValue("@id", id);                     SqlDataReader reader = cmd.ExecuteReader();                     if (reader.Read()){                         txtId.Text = reader["id"].ToString();                         txtNumero.Text = reader["celular"].ToString();                     }                 }             }catch (SqlException exc){                 MessageBox.Show("Error: " + exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);             }         }     } } 

Para resumir la idea: No envía los mensajes, es decir no me han llegado. ¿Alguna idea de cómo puedo solucionarlo?

PostgreSQL: Crear un trigger para capturar valores de una Insert

Estoy trabajando con una base de datos PostgreSQL.

Tengo una tabla llamada valores_controladores a la que automáticamente le llegan valores de unos controladores.

A parte de esa tabla, tengo otra tabla llamada alarmas_saltadas.

Lo que quiero hacer es que cada vez que se introduzca una fila en la tabla valores_controladores, leer un campo y determinando si es superior a 100 ó inferior a 10 introducir valores en la tabla alarmas_saltadas.

Gracias de Antemano

Cómo capturar variable de input con URL y mostrarlo en PHP?

Estoy creando mi pagina para descargar videos de YouTube. Ya el código tiene la forma de llamar una variable para que muestre el thumbnail del video en un DIV. El problema es cuando intento llamar la variable para que muestre el video en el iframe:

<iframe id="iframe" style="width: 560px; height: 315px"         src="//www.youtube.com/embed/<?= htmlspecialchars($  urlVideo) ?>"         data-autoplay-src="//www.youtube.com/embed/<?= htmlspecialchars($  urlVideo) ?>?autoplay=1"></iframe> 

Aqui les dejo el codigo completo por si ustedes saben como encontrar la variable y llamarla al iframe. Aqui tambien les dejo la url de la página: https://abrahamjuarbe.us/jytdownload/

Aqui tambien les dejo el codigo fuente en GITHUB, que muy probablemente les pueda ayudar: https://github.com/ScarletsFiction/LittleYoutube-PHP

<head>     <title>JYTDownload</title>     <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css">     <link rel="stylesheet" href="example/style.css">     <script src="//code.jquery.com/jquery-3.1.1.min.js"></script>     <script src="//cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>     <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>  </head> <body>   <div class="masthead clearfix">   <div class="inner">     <h3 class="masthead-brand">JYTDownload</h3>     <script type="text/javascript">function hideNext(){$  ('#nextButton').css('display', 'none');}</script>     <nav class="nav nav-masthead">       <a onclick="hideNext()" class="nav-link active" href="#collapseVideo" data-toggle="tab">Video</a>       <a onclick="hideNext()" class="nav-link" href="#collapseChannel" data-toggle="tab">Canal</a>       <a onclick="hideNext()" class="nav-link" href="#collapsePlaylist" data-toggle="tab">Playlist</a>       <a onclick="hideNext()" class="nav-link" href="#collapseSearch" data-toggle="tab">Buscar</a>     </nav>   </div> </div>  <div class="site-wrapper">   <div class="site-wrapper-inner">     <div class="cover-container">        <div class="inner cover">         <div id='content' class="tab-content">             <div class="tab-pane fade active show" aria-expanded="true" id="collapseVideo">                 <div class="form-group">                   <label>URL del Video:</label>                   <input type="text" class="form-control text-half" id="urlVideo">                   <small id="urlVideoText" class="form-text text-muted"></small>                 </div>                 <p class="lead">                   <p id="videoError"></p>                   <a onclick="videoButton()" class="btn btn-lg btn-secondary">DESCARGAR</a>                 </p>                  <div id="videoDetail" style="display: none">                     <h2 id="title"></h2>                     <p id="info"></p>                     <p id="like"></p>                     <img id="picture" src="" alt="" height="340px"/><br><br>                 </div>                  <div id="encoded" style="display: none">                     <label>Codificado (Audio+Video):</label>                     <div class="button-group">                     </div><br>                 </div>                 <div id="adaptive" style="display: none">                     <label>Adaptado (Solo Audio o Video):</label>                     <div class="button-group">                     </div><br>                     <a id="mediaCombiner" onclick="initMediaCombiner()" type="button" class="btn btn-secondary">Medios Combinados</a>                 </div><br><br>                 <div id="subtitle" style="display: none">                     <label>Subtítulos:</label>                     <div class="button-group">                     </div>                 </div>             </div>             <div class="tab-pane fade" id="collapseChannel">                 <div class="form-group">                   <label>URL del Canal:</label>                   <input type="text" class="form-control text-half" id="urlChannel">                   <small id="urlChannelText" class="form-text text-muted"></small>                 </div>                 <p class="lead">                   <p id="channelError"></p>                   <a onclick="channelButton()" class="btn btn-lg btn-secondary">DESCARGAR</a>                 </p>                 <div id="channelGroupList" style="width: 760px;margin: 0 auto;" class="list-group">                 </div>             </div>             <div class="tab-pane fade" id="collapsePlaylist">                 <div class="form-group">                   <label>URL del Lista de Reproducción:</label>                   <input type="text" class="form-control text-half" id="urlPlaylist">                   <small id="urlPlaylistText" class="form-text text-muted"></small>                 </div>                 <p class="lead">                   <p id="playlistError"></p>                   <a onclick="playlistButton()" class="btn btn-lg btn-secondary">DESCARGAR</a>                 </p>                 <div id="playlistGroupList" style="width: 760px;margin: 0 auto;" class="list-group">                 </div>             </div>             <div class="tab-pane fade" id="collapseSearch">                 <div class="form-group">                   <label>Buscar en YouTube:</label>                   <input type="text" class="form-control text-half" id="urlSearch">                   <small id="urlSearchText" class="form-text text-muted"></small>                 </div>                 <p class="lead">                   <p id="searchError"></p>                   <a onclick="searchButton()" class="btn btn-lg btn-secondary">BUSCAR</a>                 </p>                 <div id="searchGroupList" style="width: 760px;margin: 0 auto;" class="list-group">                 </div>             </div>         </div>       </div>     </div>   </div> </div>  <div class="mastfoot">   <button id="nextButton" onclick="searchButton(true)" style="margin-top: 20px;display: none;">PRÓXIMO</button>   <div class="inner">     <p>¿Alguna vez has soñado con poner tu propio canal en tu propio sitio web?<br><a href="https://github.com/ScarletsFiction/LittleYoutube-PHP" target="_blank">LittleYoutube</a> está aquí para ayudarte</p>   </div> </div> <script src="example/script.js"></script> 

Como capturar un Error MalformedJsonException

estoy intentando capturar un error del tipo MalformedJsonException de la librería gson versión 2.8.5.

  try {             String json = "{ \"name\": \"prueba\", \"java\": true}}";             JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();             System.out.println(jsonObject.get("name"));         }catch(MalformedJsonException e)          {             System.out.println(e.getMessage());         } 

El problema es que cuando intento usar la clase MalformedJsonException como catch sale el siguiente error.

Unreachable catch block for MalformedJsonException. This exception is never thrown from the try statement body.

¿Hay alguna forma de capturar este tipo de error cuando tienen este problema?

Como capturar valor de input con URL y mostrarlo en PHP?

estoy editando una aplicación para descargar videos de YouTube, y tengo el siguiente código donde quiero obtener la URL que se genera al presionar DESCARGAR y mostrarlo en un IFRAME para que, además de las opciones de descarga, también se pueda mostrar el video que se va a descargar.

https://abrahamjuarbe.us/youtube-prueba/index.php

<div style='width: 100%;margin-top: 100px;text-align: center'>         <form method='POST' enctype="multipart/form-data" action='index.php' onsubmit="prefixtrim()">             <input id='video_url' style='width: 50%;height: 40px;color: #0000ff;font-size: 20px;' autocomplete="off" type='text' name='id' value='<?= $  full_url ?>' placeholder="Pegue la URL del video de YouTube aquí" onclick="clearContent()" />             <input class='btn btn-primary' type='submit' value='DESCARGAR' name='submit'>         </form>     </div>      <iframe id="iframe" style="width: 560px; height: 315px"         src="//www.youtube.com/embed/<?php echo $  _REQUEST['submit'];  ?>"         data-autoplay-src="//www.youtube.com/embed/<?php echo $  _REQUEST['submit']; ?>?autoplay=0"></iframe> 

Capturar solo el valor de una variable pero no el tipo de dato

Tengo una variable tipo $ scope, a la que le asigno un string así:

$  scope.visitasEnConjuntoSel.municipio = "San Antonio"; 

Cuando le realizo un console.log me muestra el valor que le estoy asignando:

introducir la descripción de la imagen aquí

Pero cuando inspecciono el elemento que usa la variable $ scope me muestra en el value el tipo de dato y el valor, yo necesito que me llegue solo el valor:

introducir la descripción de la imagen aquí

Como puedo suprimir lo que esta resaltado en amarillo?

Capturar excepciones de hibernate

estoy haciendo un insert de datos con JPA y Hibernate, si los datos bienen correctos no tengo ningun problema, sin embargo si recibo datos errados me genera una excepción (y asi debe ser), el problema es que la excepcion que se permite capturar es EJBtransactionRolledBackExection

A continuación el trace del log (se elimino los registros no importantes)

2019-09-02 11:35:17,392 WARN  [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-7) SQL Error: 2290, SQLState: 23000 2019-09-02 11:35:17,392 ERROR [org.hibernate.engine.jdbc.spi.SqlExceptionHelper] (default task-7) ORA-02290: restricción de control (RESTRICCION CHECK) violada 2019-09-02 11:35:17,392 INFO  [org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl] (default task-7) HHH000010: On release of batch it still contained JDBC statements 2019-09-02 11:35:17,393 WARN  [com.arjuna.ats.arjuna] (default task-7) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffffc0a83801:-6f00954f:5d6d3f3f:a0, org.wildfly.transaction.client.AbstractTransaction$  AssociatingSynchronization@4df1da19 >: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02290: restricción de control (RESTRICCION CHECK) violada 2019-09-02 11:35:17,402 ERROR [org.jboss.as.ejb3.invocation] (default task-7) WFLYEJB0034: Invocación EJB falló en el componente ClaseJava para el método public void javax.ejb.EJBTransactionRolledbackException: Transaction rolled back Caused by: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction. Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02290: restricción de control (RESTRICCION CHECK) violada 2019-09-02 11:35:17,404 ERROR [io.undertow.request] (default task-7) UT005023: Exception handling request to /path/servicio/rest/: org.jboss.resteasy.spi.UnhandledException: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back Caused by: javax.ejb.EJBTransactionRolledbackException: Transaction rolled back Caused by: javax.transaction.RollbackException: ARJUNA016053: Could not commit transaction. Caused by: javax.persistence.PersistenceException: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement Caused by: java.sql.SQLIntegrityConstraintViolationException: ORA-02290: restricción de control (RESTRICCION CHECK) violada 

Mi pregunta concreta es, ¿Como puedo hacer para capturar la excepción de PersistenceException, ConstraintViolationException o la de SQLIntegrityConstraintViolationException? preferible la última ya que es la desencadena el resto.