Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从其他活动更改TextView?_Android - Fatal编程技术网

Android 如何从其他活动更改TextView?

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

我想从另一个活动更改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 = 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..您可以通过导入向我提供整个主要活动吗?我怎么做?您只需使用我在回答中建议的更改来重写以前编写的代码。