Java 如何在Android中附加到字符串并发送意向?
我正在尝试向字符串添加值,然后将其发送到下一个活动。这是代码中唯一相关的部分Java 如何在Android中附加到字符串并发送意向?,java,android,string,android-intent,Java,Android,String,Android Intent,我正在尝试向字符串添加值,然后将其发送到下一个活动。这是代码中唯一相关的部分adding()是按钮的id,该按钮将值附加到字符串msg中,sendMessage()同时发送msg。当我只发送一个伪值时,消息被传递,即使我一次添加像1,2,3,4,5这样的内容而不是添加,消息也会被传递。但当我尝试添加、追加然后发送时,它会给我一个“不幸停止”错误。 我尝试了几次调整,但仍然是相同的错误。如何解决这个问题 public void adding(View view){ EditText et
adding()
是按钮的id,该按钮将值附加到字符串msg
中,sendMessage()
同时发送msg。当我只发送一个伪值时,消息被传递,即使我一次添加像1,2,3,4,5这样的内容而不是添加,消息也会被传递。但当我尝试添加、追加然后发送时,它会给我一个“不幸停止”错误。
我尝试了几次调整,但仍然是相同的错误。如何解决这个问题
public void adding(View view){
EditText et1=(EditText) findViewById(R.id.editText1);
msg=msg+","+et1.getText().toString();
TextView tv1=(TextView) findViewById(R.id.textView1);
tv1.setText(msg);
et1.setText("");
}
public void sendMessage(View view){
Intent intent=new Intent(this,Next.class);
msg+=",";
intent.putExtra("message", msg);
startActivity(intent);
}
编辑:活动代码-
package com.example.newlist;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
String msg="";
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void adding(View view){
EditText et1=(EditText) findViewById(R.id.editText1);
msg=msg+","+et1.getText().toString();
TextView tv1=(TextView) findViewById(R.id.textView1);
tv1.setText(msg);
et1.setText("");
}
public void sendMessage(View view){
Intent intent=new Intent(this,Next.class);
msg+=",";
intent.putExtra("message", msg);
startActivity(intent);
}
}
我不确定我是否正确理解了你的问题
将findViewById移动到onCreate
EditText et1;
TextView tv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et1=(EditText) findViewById(R.id.editText1);
tv1=(TextView) findViewById(R.id.textView1);
}
在您的添加方法中,按如下方式执行
public void adding(View view){
msg = msg + "," + et1.getText().toString();
final String showMessage = msg;
tv1.setText(showMessage);
et1.setText("");
}
在您的sendMessage中
public void sendMessage(View view){
Intent intent=new Intent(this,Next.class);
msg+=",";
final String msgThatWillSend = msg;
intent.putExtra("message", msgThatWillSend);
startActivity(intent);
}
还没有测试,但应该可以工作尝试以下方法:
ActivityA.java
public class ActivityA extends Activity{
StringBuilder msg=new StringBuilder();
private EditText et1;
private TextView tv1;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test);
et1=(EditText)findViewById(R.id.et1);
tv1=(TextView)findViewById(R.id.tv1);
}
public void adding(View view){
msg.append(" "+et1.getText().toString());
tv1.setText(msg);
et1.setText("");
}
public void sendMessage(View view){
Intent intent=new Intent(this,Next.class);
intent.putExtra("message", msg.toString());
startActivity(intent);
}
}
Next.java
public class Next extends Activity{
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.next);
TextView tv = (TextView)findViewById(R.id.textView1);
tv.setText(getIntent().getStringExtra("message"));
}
}
test.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text=""
android:textSize="12sp" />
<EditText
android:id="@+id/et1"
android:layout_width="200dip"
android:layout_height="wrap_content"
android:text="" />
<Button
android:id="@+id/btnadd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="adding"
android:text="adding"
/>
<Button
android:id="@+id/btnsent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="sendMessage"
android:text="SendMessage" />
</LinearLayout>
next.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="msg"
android:textSize="25sp" />
</LinearLayout>
对于每个adding()
调用您正在获取的edittext
和textview
引用,最好在onCreate()
方法中获取。我有两个按钮“adding”和“sendMessage”,还有一个edittext框,在其中输入值。如果我将其保存在onCreate()中,则在单击“添加”按钮时无法完成添加。不,没有。你介意发布你的答案吗?把你的活动代码放在那里,添加活动代码。