单击 ImageView 时无法将值附加到字符串
I can't append values to a string when an ImageView is clicked
我正在尝试创建一个字符串,其内容取决于在 activity 中单击的图像。
因此,如果单击 Image1,给定的单词将附加到字符串,如果单击 Image2,则将第二个不同的单词附加到字符串,依此类推。
然后,单击所有(或部分)ImageView 后,我想使用 trhis 字符串作为要通过 SHARE INTENT 发送的文本。
到目前为止一切顺利:所有图像都已识别,按钮也是如此,附加方法工作正常,但当我尝试通过电子邮件或短信共享字符串时,文本完全是空的。
知道为什么吗?
这是我的 MainActivity
public class MainActivity extends AppCompatActivity {
Button button;
String result ="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
final int value1 = 300;
final double value2 = 3.14;
final short value3 = 5;
final char value4 = 'A';
// Create StringBuilder and add four values to it.
final StringBuilder builder = new StringBuilder();
ImageView imageview = (ImageView) findViewById(R.id.imageView);
imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.append(value1).append("\n");
}
});
ImageView imageview2 = (ImageView) findViewById(R.id.imageView2);
imageview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.append(value2).append("\n");
}
});
result = builder.toString();
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//create the send intent
Intent shareIntent =
new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT,
"Insert Subject Here");
String shareMessage = result;
shareIntent.putExtra(Intent.EXTRA_TEXT,
shareMessage);
startActivity(Intent.createChooser(shareIntent, "Share via"));
}
});
}
}
如您所见,要共享的文本是字符串 "result",它应该由附加到它的文本组成。
在我的布局中,我只有两个带按钮的 ImageView。 (可点击=真)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="88dp"
android:clickable="true"
android:background="@mipmap/ic_launcher"
android:contextClickable="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:clickable="true"
android:background="@mipmap/ic_launcher"
android:layout_alignTop="@+id/imageView"
android:layout_alignRight="@+id/button"
android:layout_alignEnd="@+id/button"
android:contextClickable="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Share"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:clickable="true"
android:contextClickable="true" />
</RelativeLayout>
有什么想法吗??
从 StringBuffer
获取附加值。移动 :
result = builder.toString();
在按钮 onClick
内。
出现问题是因为在调用 onCreate
方法时执行了 builder.toString()
行,并且在单击 ImageView 时附加了 StringBuffer 中的值。
我正在尝试创建一个字符串,其内容取决于在 activity 中单击的图像。
因此,如果单击 Image1,给定的单词将附加到字符串,如果单击 Image2,则将第二个不同的单词附加到字符串,依此类推。
然后,单击所有(或部分)ImageView 后,我想使用 trhis 字符串作为要通过 SHARE INTENT 发送的文本。
到目前为止一切顺利:所有图像都已识别,按钮也是如此,附加方法工作正常,但当我尝试通过电子邮件或短信共享字符串时,文本完全是空的。
知道为什么吗?
这是我的 MainActivity
public class MainActivity extends AppCompatActivity {
Button button;
String result ="";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.button);
final int value1 = 300;
final double value2 = 3.14;
final short value3 = 5;
final char value4 = 'A';
// Create StringBuilder and add four values to it.
final StringBuilder builder = new StringBuilder();
ImageView imageview = (ImageView) findViewById(R.id.imageView);
imageview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.append(value1).append("\n");
}
});
ImageView imageview2 = (ImageView) findViewById(R.id.imageView2);
imageview2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
builder.append(value2).append("\n");
}
});
result = builder.toString();
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//create the send intent
Intent shareIntent =
new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
shareIntent.putExtra(Intent.EXTRA_SUBJECT,
"Insert Subject Here");
String shareMessage = result;
shareIntent.putExtra(Intent.EXTRA_TEXT,
shareMessage);
startActivity(Intent.createChooser(shareIntent, "Share via"));
}
});
}
}
如您所见,要共享的文本是字符串 "result",它应该由附加到它的文本组成。
在我的布局中,我只有两个带按钮的 ImageView。 (可点击=真)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="88dp"
android:clickable="true"
android:background="@mipmap/ic_launcher"
android:contextClickable="true" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView2"
android:clickable="true"
android:background="@mipmap/ic_launcher"
android:layout_alignTop="@+id/imageView"
android:layout_alignRight="@+id/button"
android:layout_alignEnd="@+id/button"
android:contextClickable="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Share"
android:id="@+id/button"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:clickable="true"
android:contextClickable="true" />
</RelativeLayout>
有什么想法吗??
从 StringBuffer
获取附加值。移动 :
result = builder.toString();
在按钮 onClick
内。
出现问题是因为在调用 onCreate
方法时执行了 builder.toString()
行,并且在单击 ImageView 时附加了 StringBuffer 中的值。