2016-03-08 86 views
2

我试图通过预定义的xml布局simple_list_item_single_choice和选择项TextView是另一活动的再设置文本得到检查项目从listView当有问题导致行名称。 这是我showMyUI方法,从MainActivity上的TextView如何从ListView和显示中选择单个项目的另一项活动

dateRange.setOnClickListener(new View.OnClickListener() 
{ 
@Override 
public void onClick(View v) 
{ 
Toast.makeText(MainActivity.this, "Range clicked",Toast.LENGTH_SHORT).show(); 
DateRangeClass day=new DateRangeClass(MainActivity.this,dayRangeSelected); 
day.showMyUI(); 
overridePendingTransition(R.anim.right_to_left, R.anim.left_to_right); 
     } 
    }); 

点击呼叫,我DateRangeClass是

package tutorial.projecttwofilter; 
import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.Context; 
import android.graphics.Color; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 
import java.util.ArrayList; 
public class DateRangeClass { 
Context context; 
LinearLayout backButton; 
ListView rangeList; 
TextView rangeText; 
String[] dateRangeData= new String[]{"Next 7 Days", "Next 14 Days", "Next 30 Days"}; 

    public DateRangeClass(Context context,TextView rangeText) { 
    this.context = context; 
     this.rangeText=rangeText; 
} 

public void showMyUI(){ 
    ((Activity)context).setContentView(R.layout.daterange); 
    backButton= (LinearLayout) ((Activity)context).findViewById(R.id.backButton); 
    backButton.setOnClickListener(new View.OnClickListener() { 
      @Override 


      public void onClick(View v) { 
       ((Activity) context).finish(); 
       ((Activity) context).overridePendingTransition(R.anim.left_to_right, R.anim.right_to_left); 


      } 
     }); 


     rangeList= (ListView) ((Activity)context).findViewById(R.id.dateRangeList); 
     ArrayAdapter<String> adapter= new ArrayAdapter<>(context, android.R.layout.simple_list_item_single_choice, dateRangeData); 

     rangeList.setAdapter(adapter); 


     rangeList.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 

      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       rangeList.setItemChecked(position, true); 
       if(rangeList.isItemChecked(position)) 
        Toast.makeText(context, "Checked item is"+rangeList.getCheckedItemPosition(), Toast.LENGTH_SHORT).show(); 
        rangeText.setText("You new Change "+rangeList.getCheckedItemPosition()); 

      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 
       Toast.makeText(context, "Nothing selected", Toast.LENGTH_SHORT).show(); 
      } 

      }); 

} 

}

回答

0

创建DateRangeClass作为一个活动不是正常的类,并使用包传递信息。正如我所看到的,你传递的是textview,而不是你可以传递文本为字符串,并可以在第二个活动中显示。

要传输数据

String textToBesend = "Text from textview"; 

Intent i = new Intent(this, DateRangeActivity.class); 
i.putExtra("text", textToBesend); 
startActivity(i); 

,并在收到数据DateRangeActivity在onCreate方法写此。

Intent intent = getIntent(); 
String textPassedFromFirstActivity = intent.getExtras().getString("text"); 

你可以参考下面的教程为您的目的,希望它有所帮助。 passing data to activity from listview

+0

谢谢你,在我的项目中,只有单一活动是主要活动,所有其他此类DateRangeClass不是活动类,并且可以用作类而不是活动。 –

+0

如果你想要与UI相关的操作,那么你可以使用任何这些活动,片段或alertdialouge。这对于普通的java类来说是不可能的。由于android小部件无法绑定到它们。 – CodingRat

+0

感谢CodingRat的回复。 –

0

你还没有开始你的活动。

在按钮单击时使用startActivity和putIntent方法,并在第二个活动中使用getIntent方法显示文本。

+0

谢谢,但DateRangeClass不是一个活动,它是一个类。 –

相关问题