2015-10-14 66 views
-1

我有一個類,其中從輸入中獲取字符串。我想在第二個類中使用輸入的值。在另一個類中使用一個字符串(來自輸入)

public class Incontrare extends ActionBarActivity { 
public static String nome1=null; 
public String variabileNome; 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_incontrare); 


    Button button1 = (Button) findViewById(R.id.button1Nome); 
    button1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 

      alertDia(); //takes the input from variabileNome 
      nome1 = variabileNome; 
      TextView textv1 = (TextView) findViewById(R.id.textView1); 
      textv1.setText(nome1); 

     } 
    }); 

    public static String getNome1() {return nome1;} 
} 
} 

而第二類:

public class IncontrarePersona1 extends ActionBarActivity { 
String nome1=Incontrare.getNome1(); 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_incontrare_persona1); 
    b1=(Button)findViewById(R.id.play); 
    b1.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
     String toPrint = "There is " + nome1; 
     Toast.makeText(getApplicationContext(), toPrint, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

我試圖以這種方式,第二類也:

public class IncontrarePersona1 extends ActionBarActivity { 
String nome1=Incontrare.getNome1(); 
public static String no1;  

b1=(Button)findViewById(R.id.play); 
    b1.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Incontrare no1= new Incontrare(); 
    String n1= no1.nome1; 
    String toPrint = "There is " + nome1; 
     Toast.makeText(getApplicationContext(), toPrint, Toast.LENGTH_SHORT).show(); 
     } 
    }); 
} 

哪裏錯了嗎?爲什麼我總是空? 任何幫助表示讚賞。謝謝:)

+0

您嘗試在方法內定義一個公共靜態字段?這是不可能的,應該給你錯誤。這只是一個複製和粘貼失敗?請更正您的問題代碼。 –

+0

有趣的,如果你可以抓住這樣的價值,如果你可以那麼可能發生的問題是,如果variabileNome永遠不是空。這裏沒有任何代碼表明它不總是空的。 –

+0

@Pinkie,你是對的,我修改了它 – Joe

回答

1

我認爲這個問題是,當第二個Activity進入焦點時,在前面的活動數據丟失。

創建一個單獨的類來保存您的靜態變量,這兩個變量都可以訪問。

編輯: 如果我擔心整個應用程序失去焦點,另一種用於傳遞數據的方法是SharedPreferences

+0

只有當第一個Activity直接啓動第二個Activity時,才通過'intent'傳遞值,這在作爲需求一部分的問題中沒有提到。 – Will

+0

謝謝你,即時通訊使用第三類,它的工作原理:) – Joe

2

如果您從活動跳到另一個使用Bundle。

捆綁例子 - 設定值

Intent i = new Intent(); 
i.setClass(this, IncontrarePersona1.class); 
i.putExtra("text", "some text"); 
startActivity(i); 

獲得價值:

Bundle extras = getIntent().getExtras(); 
if (extras != null) 
{ 
String data= extras.getString("text"); 
//data is your param 
} 

否則使用靜態類,靜態變量作爲威爾的McG說。

+0

感謝您的幫助,但我應該在哪裏添加代碼?如果我在變量聲明之後放置它,當我嘗試打開Incontrare.class時它給了我錯誤 再次感謝您的幫助 – Joe

+0

在初始化需要傳遞的變量後,必須在第一個類的onCreate方法上設置bundle在另一個類中。然後,從包中獲取值,將這些代碼行添加到第二類的任何方法中。 我鍵入的代碼來設置和獲取價值只是複製粘貼它們。 –

相關問題