2013-09-06 2 views
1

У меня есть два вида деятельности первой одна есть две кнопки второй один имеет один TextViewChaging TextView от другой деятельности

что мне нужно , когда я нажимаю на первой кнопке второй активности открытой и TextView шоу (привет) при нажатии на вторую кнопку второй активности открытой и TextView шоу (как вы)

это первой схеме активность

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/ScrollView1" 
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" 
android:scrollbars="none" 
tools:context=".DailyPrayersActivity" > 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical" > 

    <Button 
     android:id="@+id/btn1" 
     style="@style/Button_Normal" 
     android:background="@drawable/btn01" 
     android:onClick="hello" 
     android:text="@string/hello" /> 

    <Button 
     android:id="@+id/btn2" 
     style="@style/Button_Normal" 
     android:background="@drawable/btn01" 
     android:onClick="hru" 
     android:text="@string/hru" /> 

</LinearLayout> 

</ScrollView> 

это Java класс первой активности

package com.daily.morning; 

public class FirstActivity extends Activity { 

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

public void hello(View v) { 
    Intent i1 = new Intent(firstActivity.this, SecondActivity.class); 
    SecondActivity.textview.setText("Hello"); 
    startActivity(i1); 
    finish(); 
} 

public void hru(View v) { 
    Intent i2 = new Intent(FirstActivity.this, SecondActivity.class); 
    SecondActivity.textview.setText("good morning"); 
    startActivity(i2); 
    finish(); 
} 

} 

, когда я нажимаю на первой кнопке или второй кнопки прикладную силы близко

это LogCat

>>09-06 14:26:24.054: E/AndroidRuntime(30993): FATAL EXCEPTION: main 
09-06 14:26:24.054: E/AndroidRuntime(30993): java.lang.IllegalStateException: Could not execute method of the activity 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.view.View$1.onClick(View.java:3699) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.view.View.performClick(View.java:4223) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.view.View$PerformClick.run(View.java:17275) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.os.Handler.handleCallback(Handler.java:615) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.os.Looper.loop(Looper.java:137) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.app.ActivityThread.main(ActivityThread.java:4898) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at java.lang.reflect.Method.invokeNative(Native Method) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at java.lang.reflect.Method.invoke(Method.java:511) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1008) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:775) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:103) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at dalvik.system.NativeStart.main(Native Method) 
09-06 14:26:24.054: E/AndroidRuntime(30993): Caused by: java.lang.reflect.InvocationTargetException 
09-06 14:26:24.054: E/AndroidRuntime(30993): at java.lang.reflect.Method.invokeNative(Native Method) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at java.lang.reflect.Method.invoke(Method.java:511) 
09-06 14:26:24.054: E/AndroidRuntime(30993): at android.view.View$1.onClick(View.java:3694) 
09-06 14:26:24.054: E/AndroidRuntime(30993): ... 12 more 
09-06 14:26:24.054: E/AndroidRuntime(30993): Caused by: java.lang.NullPointerException 
09-06 14:26:24.054: E/AndroidRuntime(30993): at com.daily.morning.FirstActivity.hello(FirstActivity.java:38) 
09-06 14:26:24.054: E/AndroidRuntime(30993): ... 15 more 

ответ

2

вы должны позвонить Деятельность и передача данных к этой деятельности:

Intent i2 = new Intent(FirstActivity.this, SecondActivity.class); 
i2.putExtra("key","good_morning"); 
startActivity(i2); 

И в вашем втором ACtivit у на OnCreate() метод:

Intent n = getIntent(); 
String mrng = n.getStringExtras("key"); 
textview.setText(mrng); 

вы должны поставить так:

i2.putExtra("key",getResource().getString(R.string.yourstring)); 

Добавить SecondActivity класс в AndroidManifest файла:

Ans да может быть, вы не инициализируется ваш textview ... или не найти его идентификатор.

+0

, если я хочу поставить вместо доброго утра exiseted строки from strings.xml как его использовать – BasILyoS

+0

String msg = getResources(). getString ("name"); –

+0

проверить обновленный ответ. – Piyush

0

Я рекомендую прочитать Observer Patter android

Благодаря этим вы будете делать то, что вы хотите сделать :)

2

Как ваш TextView в другой SecondActivity .Firts вам нужно получить его с помощью XML через setContentView() и findViewById(), но FirstActivity уже его собственный XML Layout. Извлечение View - это совершенно неправильный оборот.

Вы должны достичь своей цели по стоимости прохода в Bundle от FirstActivity к SecondActivity с некоторыми Key и принеси его там.

Вот является пропущено, как вы можете достичь этих: -

public void hello(View v) 
{ 
    Intent i1 = new Intent(firstActivity.this, SecondActivity.class); 
    i.putExtra("KEY",YourData); // i.putExtra("greetings", "Hello"); --> Hello is data and greeting is key to fetch from. 
    startActivity(i1); 
    finish(); 
} 

В классе SecondActivity

Вам необходимо принести ваш Bundle который вы послали из FirstActivity в SecondActivity и принести value против того же KEY, которые вам передается от вашего FirstActivity.

Bundle extras = getIntent().getExtras(); 
if(extras !=null) 
{ 
String value = extras.getString("KEY"); //  String value = extras.getString("greetings"); --> which will fetch data from key greetings to value. Thus value now contains Hello. 
TextView.setText(value); 
} 

Примечание: Исключение Брошенный в вашем случае, как вы пытаетесь вызвать метод setText() на TextView, который даже не присутствует в FirstActivity. Вот причина, почему RunTime бросает IllegalStateException

+0

вы имеете в виду со значением любой текст, я хочу (привет) (как вы) – BasILyoS

+0

TextView.setText (привет) ; или TextView.setText ("hello"); – BasILyoS

+0

@RoyJalbout: вам нужно передать значение с помощью сопоставления клавиш, например 'i.putExtra (« приветствие »,« Как вы? »)' И выборки для другого действия с помощью 'String value = extras.getString (« приветствие »); 'и' TextView.setText (значение); ' –

0

попробовать код что-то вроде этого

FirstActivity

public void hello(View v) { 
    Intent i1 = new Intent(firstActivity.this, SecondActivity.class); 
    i1.putExtra("msg","Hello"); 
    startActivity(i1); 
    finish(); 
} 

public void hru(View v) { 
    Intent i2 = new Intent(FirstActivity.this, SecondActivity.class); 
    i2.putExtra("msg","How are you ?"); 
    startActivity(i2); 
    finish(); 
} 

И в вашем втором занятии по OnCreate() метод:

textview=(TextView)findViewById(R.id.textview); 
Intent n = getIntent(); 
String mrng = n.getStringExtras("msg"); 
textview.setText(mrng); 

получения строки из строк .xml

String myString=getResources().getString("STRING_NAME"); 
0

В первом классе вы должны изменить свой код, как:

public void hello(View v) { 
Intent intent = new Intent(firstActivity.this, SecondActivity.class); 
intent.putextra("data","Hello"); //Pass the value to the intent for another class 
finish();       //If you want to finish your current activity 
startActivity(intent); 

} 

public void hru(View v) { 
Intent intent = new Intent(firstActivity.this, SecondActivity.class); 
intent.putextra("data","How are You ?"); 
finish();       
startActivity(intent); 

}

А в классе SecondActivity

public class SecondActivity extends Activity { 

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

//Get the value from the intent 
Intent intent = getIntent(); 
String Msg = intent.getStringExtras("data"); //the parameter "data" here defines the same name as you have used while passing the argument to intent in first class 

//Get your textView 
TextView textView=(TextView)findViewById(R.id.textView1); 
textview.setText(Msg); 
.... 

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