Android - Set Text to Textview

Android - Set text to TextView

In your layout XML:

<TextView
android:id="@+id/myAwesomeTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:text="Escriba el mensaje y luego clickee el canal a ser enviado"
android:textSize="20sp" />

Then, in your activity class:

// globally 
TextView myAwesomeTextView = (TextView)findViewById(R.id.myAwesomeTextView);

//in your OnCreate() method
myAwesomeTextView.setText("My Awesome Text");

Set text for a textview in Java code

You can't manipulate widgets in one Activity from another Activity. To do what I think you're trying to do, you have to pass the text entered via the Intent. E.g.:

public void method2(View view) {
Intent intent2 = new Intent(this, display2.class);
EditText enteredpw = (EditText) findViewById(R.id.line2);
String pw = enteredpw.getText().toString();
intent2.putExtra("KEY", pw);
startActivity(intent2);
}

//display2.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display2);

Intent intent2 = getIntent();
String pw = intent2.getStringExtra("KEY");
findViewById(R.id.pwdisplay).setText(pw);

the right way to set text in TextView programmatically

points_txt.setText(getResources().getString(R.string.you_have) + current_points + getResources().getString(R.string.points));

How to setText to a TextView in a different Activity

Your issue is that even though you can get the ID of the systemView TextView by using R.id.systemView when you try to find that view using findViewById(R.id.systemView) the view cannot be found as it is not in the current activity's list of ViewGroup. As such null is returned.

  • Note systemView as the id given to the TextView has been assumed.

That is, You can only successfully use findViewById to find views within the current ViewGroup (e.g. for this.FindyViewById the layout as set by setContentView).

Instead you need to make the value available to the other activity and then retrieve the value in the other activity.

There are various ways that you can make the value available, some options are :-

To pass it to the activity via the Intent that starts the other activity as an intent extra, you could store the value in shared preferences and then retrieve it in the other activity or you could store the value in a database, e.g. SQLite and retrieve it.

Using an IntentExtra is ideal if you are directly starting the other activity with a limited number of values.

  • using chained Intent Extras is also feasible (that is passing to one activity, then to another and so on).

Shared preferences could suit a situation where there are a limited number of values to be passed and the other activity isn't directly started from the activity.

A database would suit a situation where there is a fair amount of structured data and/or related data (or if you are using a database for other aspects).

An example of using an Intent could be :-

In the Activity that is passing the value

Intent i = new Intent(this, yourOtherActivity.class);
i.putExtra("YOURINTENTEXTRAKEY","Business"); //<<<< 1st parameter is a Key for identification, the 2nd parameter is the value to be passed
startActivity(i);

In the other Activity's onCreate (after you've set the contentView)

TextView mSystemView = this.find(R.id.systemView);
if (this.getIntent().getStringExtra("YOURINTENTEXTRAKEY") != null) {
mSystemView.setText(this.getItent().getStringExtra("YOURINTENTEXTRAKEY"));
} else {
mSystemView.setText("NO VALUE PASSED");
}
  • You set pass and return multiple IntentExtras see Intent for various options and types of values that can be passed/retrieved.

Simple Working Example

The following is code for a working example. The first activity (MainActivity) has a CheckBox and a Button.

The Button can be clicked or longClicked. If the latter then nothing is passed to the second activity. If the former then depedning upon whether or not the CheckBox is ticked will either pass "Not Checked" or "Business".

The second activity, if passed a value (either "Not Checked" or "Business") will display the passed value, if nothing is passed then it will display "NOTHING PASSED". The button on the second activity will return to the first activity (alternately using the back button will return to the first activity).

MainActivity.java

public class MainActivity extends AppCompatActivity {

public static final String INTENTKEY_CHECKBOXA = "checkboxa";

CheckBox checkBoxA;
Button nextActivity;
String valueToPass = "Not Checked";

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

checkBoxA = this.findViewById(R.id.checkBoxA);
checkBoxA.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
if (checkBoxA.isChecked()) {
valueToPass = "Business";
} else {
valueToPass = "Not Checked";
}
}
});
nextActivity = this.findViewById(R.id.nextActivity);
//Set onlick listener (pass value via intent)
nextActivity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
callNextActivity(true);
}
});
// Set onlongclick listener (doesn't pass value via intent)
nextActivity.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
callNextActivity(false);

return true;
}
});
}

private void callNextActivity(boolean passvalue) {
Intent i = new Intent(this,NextActivity.class);
if (passvalue) {
i.putExtra(INTENTKEY_CHECKBOXA, valueToPass);
}
startActivity(i);
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!" />
<Button
android:id="@+id/nextActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NEXT ACTIVITY"/>
<CheckBox
android:id="@+id/checkBoxA"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />

</LinearLayout>

NextActivity.java

public class NextActivity extends AppCompatActivity {

Button doneButton;
TextView systemView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_next);
systemView = this.findViewById(R.id.sysstemView);
doneButton = this.findViewById(R.id.done);
if (this.getIntent().getStringExtra(MainActivity.INTENTKEY_CHECKBOXA) != null) {
systemView.setText(this.getIntent().getStringExtra(MainActivity.INTENTKEY_CHECKBOXA));
} else {
systemView.setText("NOTHING PASSED");
}
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
doneWithActivity();
}
});
}

// Return from this activity
private void doneWithActivity() {
this.finish();
}
}

activity_next.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".NextActivity">

<Button
android:id="@+id/done"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="DONE"/>

<TextView
android:id="@+id/sysstemView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>

Kotlin: How to get and set a text to TextView in Android using Kotlin?

In kotlin don't use getters and setters as like in java.The correct format of the kotlin is given below.

val textView: TextView = findViewById(R.id.android_text) as TextView
textView.setOnClickListener {
textView.text = getString(R.string.name)
}

To get the values from the Textview we have to use this method

 val str: String = textView.text.toString()

println("the value is $str")

Change TextView text

Your approach is incorrect. I think it will be Null Pointer Exception (next time post log cat)

You need to specify the layout you are using first, before finding views.

Java:

// Specify the layout you are using.
setContentView(R.layout.yourlayout);

// Load and use views afterwards
TextView tv1 = (TextView)findViewById(R.id.textView1);
tv1.setText("Hello");

Kotlin:

// Specify the layout you are using.
setContentView(R.layout.yourlayout)

// Load and use views afterwards
val tv1: TextView = findViewById(R.id.textView1)
tv1.text = "Hello"

Click Here to study exactly you want to know

How set text in textview and formatted it as code? (Android Java)

You can use this library to enable code highlighting.

Can't set text on text view in dialog fragment

I just tested your code and it is resolved by removing the onCreateView().. You already use onCreateDialog() and it's enough for setting the binding object.

The layout is inflated twice, and probably the textView gets changed on the layout that is not on the UI. That is probably because the onCreateView() gets called after onCreateDialog(). So, when you change the text in the onCreateDialog() inflated layout the change is not appeared because the inflated layout by onCreateView() is laid on top of it.

What is the difference between textView.setText(string) and textView.text = $string

They're the same in most cases, basically Kotlin generates a synthetic property for the class attributes based on their getter, which you can use to assign values to and get values from.

//So, for most cases
textView.setText("some value");
//Is the same as
textView.text = "some value"
//The second is simply shorter and is the 'kotlin way' of assigning values

Now, here's the catch -

In most cases, this works fine. But, as mentioned, the synthetic property is generated from the getter, if there is a setter as well, then issues arise. The reason is that the getter and the setter may have different types. For example, EditText has Editable getter, now, kotlin creates a synthetic property text of the type Editable.

editText.setText("some value"); //Works
editText.text = "some value" //Won't work, will show an error stating that expected type is Editable


Related Topics



Leave a reply



Submit