2013-12-11 3 views
0

Я только начал с разработки Android-приложения. И это приложение - просто случайное приложение с кавычками. Теперь я пытаюсь получить текст из случайного цитирования textview. Но он возвращает false.Как получить текст из случайного набора текста?

public class DisplayQuoteActivity extends Activity { 

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

    final String[] listQuotes = {"Quote one","A million or so","Really don't care","Looks like it","Day is done!"}; 

    Random randGen = new Random(); 
    int rando = randGen.nextInt(5); 

    TextView textQuote = (TextView) findViewById(R.id.viewQuote); 
    textQuote.setText(listQuotes[rando]); 
} 


/** Called when an user wants to share a quote**/ 
public void shareQuote(View view){ 
    Log.d("test_app","Share Quote been pushed"); 
    Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND); 
    sharingIntent.setType("text/plain"); 
    String shareBody = this.getString(R.id.viewQuote);// "Here is the share content body"; 
    sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject Here"); 
    sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody); 
    startActivity(Intent.createChooser(sharingIntent, "Share via")); 
} 

}

shareBody кажется ложным.

Как получить текст из вида textQuote ??

ответ

1

textQuote сделать глобальную переменную и заменить

String shareBody = this.getString(R.id.viewQuote); 

с

String shareBody = textQuote.getText().toString(); 
+0

ТХ, сделал свое предложение, чтобы работать с помощью 'Струнный shareBody = textQuote.getText() ToString();. 'И делает textQuote глобальной переменной – alex

+0

Вы можете. Если это поможет вам принять ответ. – Apoorv

+0

Кстати, есть ли у вас какие-либо предложения о том, какую стратегию следует придерживаться, чтобы включить 500 различных котировок и еженедельных добавленных котировок? Должен ли я использовать текстовый файл или базу данных? заранее спасибо – alex

1

Постарайся делать это:

String shareBody = ((TextView) findViewById(R.id.viewQuote)).getText(); 
+0

извините, ваше предложение дает это сообщение: 'missmatch: не может конвертировать из CharSequence в String' – alex

+1

Да, правильно .. вам нужно сделать textView.getText(). ToString(). Я забыл об этом. В принципе, characterSequence - это интерфейс, который реализует String. Проблема привязки родителя к ребенку. –

1

Используйте просто это один

textQuote.getText().toString(); 

т.е.

((TextView) findViewById(R.id.viewQuote)).getText().toString(); 
+0

thx ваше предложение также работает. Но как noob, какое решение вы порекомендовали бы вам или Apoorv, сделав textQuote глобальным? – alex

+0

Зависит от того, сколько раз вы получаете доступ к «TextView». Если вы обращаетесь к нему более одного раза: скорее добавьте глобальное поле 'textQuote'/String в качестве _Apoorv_. Если вы заходите к нему только один раз, мое выше хорошо. Если вы знакомы с Java и аннотациями, AndroidAnnotations (http://androidannotations.org/) может быть вам интересен. – Trinimon

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