簡體   English   中英

無法將值從意圖傳遞給另一個活動

[英]Cannot Pass the Value from Intent to another activity

編輯這是第一個活動的完整代碼:

public class login extends AppCompatActivity {
    dbhelper mydb;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

    mydb = new dbhelper(this);

    Button btn = (Button) findViewById(R.id.Buttonregis);
    btn.setOnClickListener(new View.OnClickListener(){

        @Override
                    public void onClick(View v){
            Intent i = new Intent(login.this,Reg.class);
            startActivity(i);
        }


    });

    Button lgn = (Button) findViewById(R.id.btlogin);
    lgn.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            //AMBIL CONTENT EDIT_TEXT
            EditText txtusername = (EditText)findViewById(R.id.ETusername);
            EditText txtpassword = (EditText)findViewById(R.id.ETpassword);
            //CONVERT EDIT_TEXT MENJADI STRING
            String user = txtusername.getText().toString();
            String pass = txtpassword.getText().toString();
            //PANGGIL FUNGSI VALIDasi DARI kelas dbhelper
            if(mydb.checkvalid(user,pass) == true){
                Intent i = new Intent(login.this,Menu.class);
                i.putExtra("nama",user);
                startActivity(i);


            }else{
                Toast.makeText(getApplicationContext(), "Wrong ID/password", Toast.LENGTH_SHORT).show();
            }






        }


    });

編輯這是我從第二個活動中撤出的方式:

public class Menu extends AppCompatActivity {
dbhelper mydb;
Intent intent = getIntent();
String user = intent.getExtras().getString("nama");

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);




    Button babout = (Button) findViewById(R.id.btabout);
    babout.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            Intent about = new Intent(Menu.this,About.class);
            startActivity(about);
        }


    });

    Button bprofile = (Button) findViewById(R.id.btprofile);
    bprofile.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            Intent profile = new Intent(Menu.this,Profile.class);
            //profile.putExtra("bknnama",user);
            startActivity(profile);
        }


    });
    //select
    Button bcheck = (Button) findViewById(R.id.btcheck);
    bcheck.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            Intent check = new Intent(Menu.this,Reg.class);
            startActivity(check);
        }


    });
    Button bnovel = (Button) findViewById(R.id.btnovel);
    bnovel.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v){
            Intent about = new Intent(Menu.this,Novel_list.class);
            startActivity(about);
        }


    });
}

}系統聲明沒有錯誤,但是當我打開應用程序並按相應的按鈕進入另一個活動時,我的應用程序被強制關閉。

當我將Intent代碼放入注釋時,該應用程序再次可以正常運行,但是我需要將用戶字符串傳遞給另一個活動。

編輯這是logcat的回復

引起原因:java.lang.NullPointerException:嘗試在空對象引用上調用虛擬方法'android.os.Bundle android.content.Intent.getExtras()'

代碼錯誤。 您必須在OnCreate方法中獲得意圖:

public class Menu extends AppCompatActivity {
dbhelper mydb;
//....
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_menu);
      Intent intent = getIntent();
      String user = intent.getExtras().getString("nama");
      // ..rest of your code...
    }
}

希望能幫助到你。 問候,CS

從這里更改您的代碼

 Intent intent = getIntent();
 String user = intent.getExtras().getString("nama");

 Intent intent = getIntent();
 String user = intent.getStringExtra("nama");

確保在AndroidManifest.xml中聲明了Menu.class

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM