2017-01-21 3 views
-1

Я помещаю три файла 1.activity_main.xml, 2.MainActivity.java, файлы 3.strings.xml .... Я новый разработчик приложений, имеющий много проблем с простыми вещами с программыAndroid-приложение Сбой при использовании метода setText

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> 
+0

использование этого 'TextView t1 = (TextView) findViewById (R.id.text1)' внутри OnCreate – GVillani82

+1

Этот код не будет врезаться на ' setText() 'call. Он выйдет из строя при первом вызове findViewById(). Вы уверены, что у вас есть детали? –

+0

Это может быть глупый вопрос, но я провел недели в разочаровании. –

ответ

3

Используйте это:

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"); 
    } 
1

Поместите эти строки внутри OnCreate ниже 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); 
} 
0

обновление вашего MainActivity с этим кодом:

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"); 
} 
} 
1
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"); 
        } 
      }); 


    } 
+0

Спасибо большое .. Теперь это не сбой ... Но еще один. Он сработает после нажатия кнопки –

+0

Все работы хорошо сейчас .... Спасибо lottt ... Сделал мой день –

+0

Если он работает хорошо, чем отказаться от голосования на мой ответ. –

0

Вы должны получить идентификатор в методе oncreate() после вызова метода setConteview.

 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"); 
    } 
+0

Могут ли переменные отображаться в методе rep(), если они определены в onCreate() ..? –

+0

попробуйте приведенный выше отредактированный пост. Он будет работать без сбоев. Благодарим вас за кодирование –

0

Смотрите эти строки:

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

Это неправильно. Вам необходимо написать письмо R.id, а не R.string.

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

Используйте это:

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"); 
    } 
} 
Смежные вопросы