2015-11-01 2 views
-2

Я пытаюсь создать строку, содержимое которой зависит от изображений, нажатых в действии.Я не могу добавить значения к строке при щелчке ImageView

Итак, если нажата кнопка Image1, к строке добавляется данное слово, если нажимается Image2, добавляется второе слово в строку и т. Д.

Затем, как только все (или некоторые) из ImageViews будут нажаты, я хотел бы использовать trhis string в качестве текста, который будет отправлен через SHARE INTENT.

До сих пор так хорошо: все изображения были идентифицированы, то же самое для кнопки, метод append работает нормально, но когда я пытаюсь передать строку по электронной почте или SMS, текст абсолютно пуст.

Любая идея, почему?

Это мой 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")); 
     } 
    }); 
    } 
} 

как вы можете видеть, текст, который будет общим является «результатом» строки, которая должна состоять из текста, приложенного к нему.

В моем макете у меня есть только два ImageViews с кнопкой. (clickable = true)

<?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> 

Любая идея?

+0

Вы задали тот же [вопрос] (http://stackoverflow.com/questions/33453488/how-to-append-text-with-onclick-method) вчера, почему вы спрашиваете его снова ?! – Mohamed

+0

Привет Мохамед благодарит за вопрос! Вчера я получил половину ответа от Саида, так как предустановленный текст добавляется к строке. В вашем случае он работал с содержимым TextView, что не было моим делом. Кроме того, мне нужно было несколько элементов, которые нужно щелкнуть и добавить. Теперь мне удалось добавить только заданное значение (вместо содержимого TextView), но я не смог получить строку внутри текста, который будет использоваться совместно! – MDR

ответ

0

Чтобы получить добавленное значение от StringBuffer. Перемещение:

result = builder.toString(); 

внутри onClick кнопки.

Проблема возникает из-за того, что строка builder.toString() выполняется, когда вызывается метод onCreate, а значения в StringBuffer добавляются при щелчке ImageView.

+0

Ты гений, спасибо! Последний вопрос: когда я нажимаю на изображение, я бы хотел, чтобы галочка появилась, любая идея? – MDR

+0

@MDR: почему бы не изменить ImageView щелчок или хороший, если пользовательский флажок –

+0

mumble mumble, вы сделали бы это из макета .xml или Activity.class? – MDR

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