Faizaan Gagan
Faizaan Gagan

Reputation: 752

Android App Crashes on using setText method

I am putting three files 1.activity_main.xml ,2.MainActivity.java ,3.strings.xml files ....I am a new app developer having many issues with doing simple stuff with android apps

1.activity_main.xml

<?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:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="faizsols.com.test.MainActivity">


<TextView
    android:text="@string/text1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_alignParentEnd="true"
    android:layout_marginEnd="134dp"
    android:layout_marginTop="106dp"
    android:id="@+id/text1"
    android:textSize="30sp" />

<Button
    android:text="@string/but1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/text1"
    android:layout_alignStart="@+id/text1"
    android:layout_marginTop="99dp"
    android:onClick="rep"
    android:id="@+id/but1" />
</RelativeLayout>

2.MainActivity.java

    package faizsols.com.test;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.TextView;
    import android.widget.Button;


    public class MainActivity extends AppCompatActivity {

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

TextView t1 = (TextView)findViewById(R.string.text1);
Button rpl = (Button)findViewById(R.string.but1);


public void rep(View view) {
    t1.setText("I am fine");
}

}

3.strings.xml

    <resources>
<string name="app_name">Test</string>
<string name="text1">hello</string>
<string name="but1">Reply</string>

</resources>

Upvotes: 0

Views: 2751

Answers (7)

I know the question is solved as of now, but I would like to add a problem that you might be facing with the recent version of Android Studio. It seems impossible to set text with TextView. As an alternative, I have been using EditText as it is easy to use and can be called and defined in any function (not only OnCreate).

Edit text can be found in the palette option under 'text' under the design layout and its use is very similar to TextView

 EditText txt =(EditText) findViewById(R.id.editText);
 txt.setText("This actually works");

Upvotes: 0

Hiren Gondaliya
Hiren Gondaliya

Reputation: 156

Changes in MainActivity.class


         package faizsols.com.test;

        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;
        import android.widget.TextView;
        import android.widget.Button;


        public class MainActivity extends AppCompatActivity {

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

              TextView t1 = (TextView)findViewById(R.id.text1);
              Button rpl = (Button)findViewById(R.id.but1);


              rpl .setOnClickListener(new View.OnClickListener() {
                 @Override
                  public void onClick(View v) {
                      t1.setText("I am fine");
                   }
             });   


    }

Upvotes: 1

Mahendra Dabi
Mahendra Dabi

Reputation: 113

you have to fetch the id in oncreate() method after the setConteview method called.

     package faizsols.com.test;

        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;
        import android.widget.TextView;
        import android.widget.Button;


        public class MainActivity extends AppCompatActivity {

 TextView t1;
  Button rpl;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    t1 = (TextView)findViewById(R.id.text1);
  rpl = (Button)findViewById(R.id.but1);
    }




    public void rep(View view) {
        t1.setText("I am fine");
    }

Upvotes: 0

ra1ned
ra1ned

Reputation: 337

See those lines:

TextView t1 = (TextView)findViewById(R.string.text1);
Button rpl = (Button)findViewById(R.string.but1);

It's wrong. You need to write R.id, not R.string.

TextView t1 = (TextView)findViewById(R.id.text1);
Button rpl = (Button)findViewById(R.id.but1);

Use this:

package faizsols.com.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;


public class MainActivity extends AppCompatActivity {
    TextView t1 = (TextView)findViewById(R.id.text1);
    Button rpl = (Button)findViewById(R.id.but1);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void rep(View view) {
        t1.setText("I am fine");
    }
}

Upvotes: 0

Ankush Bist
Ankush Bist

Reputation: 1892

update your MainActivity with this code:

   package faizsols.com.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;

   public class MainActivity extends AppCompatActivity {
TextView t1;
Button rpl;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
 t1 = (TextView)findViewById(R.id.text1);
rpl = (Button)findViewById(R.id.but1);
}

public void rep(View view) {
    t1.setText("I am fine");
}
}

Upvotes: 0

Aman Shekhar
Aman Shekhar

Reputation: 2780

Use this:

package faizsols.com.test;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Button;


public class MainActivity extends AppCompatActivity {

    private TextView t1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // You should initialize in onCreate()
        t1 = (TextView)findViewById(R.id.text1);
        Button rpl = (Button)findViewById(R.id.but1);
    }

    public void rep(View view) {
        t1.setText("I am fine");
    }

Upvotes: 4

Suresh Kumar
Suresh Kumar

Reputation: 2034

Put these lines inside your onCreate below setContentView

TextView t1;
Button rpl;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    t1 = (TextView)findViewById(R.id.text1);
    rpl = (Button)findViewById(R.id.but1);
}

Upvotes: 1

Related Questions