Android 如何从其他活动更改TextView?
我想从另一个活动更改textview,但这不起作用 MainActivity(带文本视图) 这是另一个活动中的onClick:Android 如何从其他活动更改TextView?,android,Android,我想从另一个活动更改textview,但这不起作用 MainActivity(带文本视图) 这是另一个活动中的onClick: public void onClick8 (View view) { //HERE IS ONCLICK MEHOD WHEN I CLICK TEXT CHANGE TO ANOTHER TEXT MainActivity.textViewObj.setText("Text change"); //END Intent myIntent
public void onClick8 (View view) {
//HERE IS ONCLICK MEHOD WHEN I CLICK TEXT CHANGE TO ANOTHER TEXT
MainActivity.textViewObj.setText("Text change");
//END
Intent myIntent = new Intent(view.getContext(), MainActivity.class);
startActivity(myIntent);
finish();
MediaPlayer mediaPlayer = MediaPlayer.create(zem13.this, R.raw.dobre);
mediaPlayer.start();
}
LOGCAT更新
当我运行android studio编写以下内容时:
当我运行android studio编写以下内容时:
当我运行android studio编写以下内容时:
03-16 16:45:43.750 1703-1703/com.example.tom.kvz D/dalvikvm﹕ Not late-enabling CheckJNI (already on)
03-16 16:45:43.880 1703-1710/com.example.tom.kvz E/jdwp﹕ Failed sending reply to debugger: Broken pipe
03-16 16:45:43.880 1703-1710/com.example.tom.kvz D/dalvikvm﹕ Debugger has detached; object registry had 1 entries
03-16 16:45:43.890 1703-1703/com.example.tom.kvz D/dalvikvm﹕ GC_FOR_ALLOC freed 65K, 5% free 3417K/3560K, paused 0ms, total 2ms
03-16 16:45:43.940 1703-1706/com.example.tom.kvz D/dalvikvm﹕ GC_CONCURRENT freed <1K, 4% free 3823K/3968K, paused 49ms+1ms, total 51ms
03-16 16:45:43.980 1703-1703/com.example.tom.kvz D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 4% free 4229K/4372K, paused 35ms, total 35ms
03-16 16:45:44.000 1703-1706/com.example.tom.kvz D/dalvikvm﹕ GC_CONCURRENT freed <1K, 4% free 4430K/4576K, paused 19ms+1ms, total 22ms
03-16 16:45:44.160 1703-1703/com.example.tom.kvz D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 4% free 4432K/4576K, paused 47ms, total 47ms
03-16 16:45:44.160 1703-1703/com.example.tom.kvz I/dalvikvm-heap﹕ Grow heap (frag case) to 6.560MB for 2266284-byte allocation
03-16 16:45:44.250 1703-1713/com.example.tom.kvz D/dalvikvm﹕ GC_FOR_ALLOC freed <1K, 3% free 6645K/6792K, paused 87ms, total 87ms
03-16 16:45:44.270 1703-1706/com.example.tom.kvz D/dalvikvm﹕ GC_CONCURRENT freed 0K, 3% free 6645K/6792K, paused 17ms+0ms, total 20ms
03-16 16:45:44.580 1703-1706/com.example.tom.kvz D/dalvikvm﹕ GC_CONCURRENT freed 36K, 2% free 7662K/7776K, paused 19ms+1ms, total 22ms
03-16 16:45:44.590 1703-1703/com.example.tom.kvz W/GooglePlayServicesUtil﹕ Google Play services is missing.
03-16 16:45:44.600 1703-1703/com.example.tom.kvz W/GooglePlayServicesUtil﹕ Google Play services is missing.
03-16 16:45:44.600 1703-1703/com.example.tom.kvz V/WebViewChromium﹕ Binding Chromium to the main looper Looper (main, tid 1) {b1028e58}
03-16 16:45:44.650 1703-1703/com.example.tom.kvz I/chromium﹕ [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
03-16 16:45:44.650 1703-1703/com.example.tom.kvz I/BrowserProcessMain﹕ Initializing chromium process, renderers=0
03-16 16:45:45.460 1703-1756/com.example.tom.kvz W/chromium﹕ [WARNING:proxy_service.cc(888)] PAC support disabled because there is no system implementation
03-16 16:45:45.680 1703-1703/com.example.tom.kvz D/﹕ HostConnection::get() New Host Connection established 0xb821be30, tid 1703
03-16 16:45:45.770 1703-1703/com.example.tom.kvz I/Ads﹕ Starting ad request.
03-16 16:45:45.770 1703-1703/com.example.tom.kvz I/Ads﹕ Use AdRequest.Builder.addTestDevice("B3EEABB8EE11C2BE770B684D95219ECB") to get test ads on this device.
03-16 16:45:45.790 1703-1703/com.example.tom.kvz D/AndroidRuntime﹕ Shutting down VM
03-16 16:45:45.790 1703-1703/com.example.tom.kvz W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0xb0d11b20)
03-16 16:45:45.790 1703-1703/com.example.tom.kvz E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.tom.kvz, PID: 1703
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.tom.kvz/com.example.tom.kvz.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.tom.kvz.MainActivity.onCreate(MainActivity.java:30)
at android.app.Activity.performCreate(Activity.java:5231)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
at android.app.ActivityThread.access$800(ActivityThread.java:135)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5017)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
at dalvik.system.NativeStart.main(Native Method)
03-16 16:45:45.850 1703-1735/com.example.tom.kvz D/dalvikvm﹕ DexOpt: --- BEGIN 'ads952707653.jar' (bootstrap=0) ---
03-16 16:45:45.960 1703-1735/com.example.tom.kvz D/dalvikvm﹕ DexOpt: --- END 'ads952707653.jar' (success) ---
03-16 16:45:45.960 1703-1735/com.example.tom.kvz D/dalvikvm﹕ DEX prep '/data/data/com.example.tom.kvz/cache/ads952707653.jar': unzip in 0ms, rewrite 116ms
03-16 16:45:43.750 1703-1703/com.example.tom.kvz D/dalvikvm﹕ 未延迟启用CheckJNI(已启用)
03-16 16:45:43.880 1703-1710/com.example.tom.kvz E/jdwp﹕ 向调试器发送答复失败:管道断开
03-16 16:45:43.880 1703-1710/com.example.tom.kvz D/dalvikvm﹕ 调试器已分离;对象注册表有1个条目
03-16 16:45:43.890 1703-1703/com.example.tom.kvz D/dalvikvm﹕ 所有释放65K的GC,5%释放3417K/3560K,暂停0毫秒,总计2毫秒
03-16 16:45:43.940 1703-1706/com.example.tom.kvz D/dalvikvm﹕ 您可以使用bundles将数据从一个活动发送到另一个活动
寄包裹
Bundle bundle = new Bundle();
bundle.putString("Name","Text Change"); //This is for a String
Intent i=new Intent(CurrentActivity.this, MainActivity.class);
i.putExtras(bundle);
startActivity(i);
接收捆绑包并将其设置为main活动中的TextView
Bundle bundle = null;
bundle = this.getIntent().getExtras();
String myString = bundle.getString("Name");//this is for String
textViewObj.setText(myString );
extras = getIntent().getExtras();
String myString = extras.getString("Name");
textViewObj.setText(myString );
public class MainActivity extends Activity {
public static TextView textViewObj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
textViewObj = (TextView) findViewById(R.id.textView10);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
if(getIntent().getExtras().get("name") != null)
textViewObj.setText((Integer) getIntent().getExtras().get("name"));
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
public void onClick17(View view) {
Intent myIntent = new Intent(view.getContext(), kviz.class);
startActivity(myIntent);
finish();
}
}
编辑-谢谢@squonk的建议
或
使用此选项将字符串发送到MainActivity
Intent i = new Intent(CurrentActivity.this, MainActivity.class);
i.putExtra("Name", "Text Change");
在MainActivity中接收字符串的步骤
Bundle bundle = null;
bundle = this.getIntent().getExtras();
String myString = bundle.getString("Name");//this is for String
textViewObj.setText(myString );
extras = getIntent().getExtras();
String myString = extras.getString("Name");
textViewObj.setText(myString );
public class MainActivity extends Activity {
public static TextView textViewObj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
textViewObj = (TextView) findViewById(R.id.textView10);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
if(getIntent().getExtras().get("name") != null)
textViewObj.setText((Integer) getIntent().getExtras().get("name"));
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
public void onClick17(View view) {
Intent myIntent = new Intent(view.getContext(), kviz.class);
startActivity(myIntent);
finish();
}
}
更新2
首先,删除这两个导入项
import static com.example.tom.kvz.R.id;
import static com.example.tom.kvz.R.layout;
那么应该是
textViewObj = (TextView) findViewById(R.id.textView10);
AdView mAdView = (AdView) findViewById(R.id.adView);
所以,这应该是你的主要活动
Bundle bundle = null;
bundle = this.getIntent().getExtras();
String myString = bundle.getString("Name");//this is for String
textViewObj.setText(myString );
extras = getIntent().getExtras();
String myString = extras.getString("Name");
textViewObj.setText(myString );
public class MainActivity extends Activity {
public static TextView textViewObj;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(layout.activity_main);
textViewObj = (TextView) findViewById(R.id.textView10);
AdView mAdView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder().build();
mAdView.loadAd(adRequest);
if(getIntent().getExtras().get("name") != null)
textViewObj.setText((Integer) getIntent().getExtras().get("name"));
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
}
public void onClick17(View view) {
Intent myIntent = new Intent(view.getContext(), kviz.class);
startActivity(myIntent);
finish();
}
}
运行此代码时会发生什么情况???不会发生任何情况它将保持不变:(运行时出现任何错误???@peter:请阅读更多有关Android应用程序基础知识的信息。特别是与活动相关的信息。切勿声明任何公共静态
字段(变量)或者方法,并希望它们可以从其他Android应用程序组件访问。如果您希望将数据从一个活动
传递到另一个活动,则将数据作为启动另一个活动
的意图
中的一个额外的传递。这是Android工作方式的一个非常基本的部分。文本视图中的文本是nt正在更改,因为当您调用new Intent时,会调用MainActivity并再次初始化TextView。因此,您只需将一个bundle传递给MainActivity,然后在MainActivity中检索bundle并将其设置为TextView。这太复杂了。无需创建bundle
并将其添加到Intent
。只需使用i.putExtra(“名称”,“文本更改”)默认情况下,
将在捆绑包中额外添加一个字符串Intent
已经存在。类似地,您不需要使用getExtras
在另一个活动中检索捆绑包
。只需调用getIntent().getStringExtra(…)
就足够了。你的方法太冗长了。@Squonk我已经更新了我的答案。.谢谢你的提示。.我给出了这个答案,因为我认为这对他将来将多个项目传递给另一个活动真的很有帮助。.还要注释掉AdView mAdView=(AdView)findViewById(id.AdView);AdRequest AdRequest=new AdRequest.Builder().build();mAdView.loadAd(AdRequest);
当您从中获得nul时..您的日志显示错误代码为0..您可以通过导入向我提供整个主要活动吗?我怎么做?您只需使用我在回答中建议的更改来重写以前编写的代码。